@@ -11,6 +11,20 @@ import (
11
11
"github.com/microsoft/wmi/server2019/root/microsoft/windows/storage"
12
12
)
13
13
14
+ const (
15
+ // PartitionStyleUnknown indicates an unknown partition table format
16
+ PartitionStyleUnknown = 0
17
+ // PartitionStyleGPT indicates the disk uses GUID Partition Table (GPT) format
18
+ PartitionStyleGPT = 2
19
+
20
+ // GPTPartitionTypeBasicData is the GUID for basic data partitions in GPT
21
+ // Used for general purpose storage partitions
22
+ GPTPartitionTypeBasicData = "{ebd0a0a2-b9e5-4433-87c0-68b6b72699c7}"
23
+ // GPTPartitionTypeMicrosoftReserved is the GUID for Microsoft Reserved Partition (MSR)
24
+ // Reserved by Windows for system use
25
+ GPTPartitionTypeMicrosoftReserved = "{e3c9e316-0b5c-4db8-817d-f92df00215ae}"
26
+ )
27
+
14
28
// QueryDiskByNumber retrieves disk information for a specific disk identified by its number.
15
29
//
16
30
// The equivalent WMI query is:
@@ -34,3 +48,31 @@ func QueryDiskByNumber(diskNumber uint32, selectorList []string) (*storage.MSFT_
34
48
35
49
return disk , nil
36
50
}
51
+
52
+ // ListDisks retrieves information about all available disks.
53
+ //
54
+ // The equivalent WMI query is:
55
+ //
56
+ // SELECT [selectors] FROM MSFT_Disk
57
+ //
58
+ // Refer to https://learn.microsoft.com/en-us/windows-hardware/drivers/storage/msft-disk
59
+ // for the WMI class definition.
60
+ func ListDisks (selectorList []string ) ([]* storage.MSFT_Disk , error ) {
61
+ diskQuery := query .NewWmiQueryWithSelectList ("MSFT_Disk" , selectorList )
62
+ instances , err := QueryInstances (WMINamespaceStorage , diskQuery )
63
+ if IgnoreNotFound (err ) != nil {
64
+ return nil , err
65
+ }
66
+
67
+ var disks []* storage.MSFT_Disk
68
+ for _ , instance := range instances {
69
+ disk , err := storage .NewMSFT_DiskEx1 (instance )
70
+ if err != nil {
71
+ return nil , fmt .Errorf ("failed to query disk %v. error: %v" , instance , err )
72
+ }
73
+
74
+ disks = append (disks , disk )
75
+ }
76
+
77
+ return disks , nil
78
+ }
0 commit comments