I am currently working on a project where I need to use WMI (Windows Management Interface). I need to find the Hard Disks, and Logical Disks and some information about them. For example I use the following code to get the physical disk:
hd = new HardDrive();
mosDisks = new ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive WHERE Model = '"
+ disksModel[i] + "'");
foreach(ManagementObject moDisk in mosDisks.Get())
{
string vari = moDisk["DeviceID"].ToString();
hd.HardDiskModel = moDisk["Model"].ToString();
hd.HardDiskType = moDisk["InterfaceType"].ToString();
hd.HardDiskStatus = moDisk.Properties["Status"].Value.ToString();
hd.HardDiskSize = moDisk.Properties["Size"].Value.ToString();
hd.HardDiskName = moDisk.Properties["Name"].Value.ToString();
hd.HardDiskSerialNo = moDisk.Properties["SerialNumber"].Value.ToString();
}
And then another query to get logical disks.
The only thing I'd like to know is: how can I make sure that I get the logical disks for a specific Hard Disk?
For example, if I have 3 Hard Disks(HD1, HD2, HD3), and 8 logical disks (c: to j:), how can I make sure in the code that for example c: and d: belong to HD1, e:, f:, g: and h: belong to HD2 and i: and j: belong to HD3?
You can correlate the
Win32_DiskDrivewith the logical drives using theASSOCIATORS OFsentence, these are the classes which you must use.Some time ago I wrote a Delphi sample about this which you can check, Also you can found a C# sample on this SO question.