I have a txt file with volume id’s in it.
I need to get drive info (drive letter, drive size, etc.) from the drive volume id (Windows):
the volume id is in the following format:
\\?\Volume{XXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}
The drive can be Removable/local disk
It doesn’t matter how the info is retrieved (it could be script, cpp ,c#, java code).
EDIT:
I tried to use DriveInfo, Win32_LogicalDisk, Win32_Volume, Win32_PnpDevices – but I couldn’t find this weird id… in all cases the id has a differrent format
UPDATE:
Found out how to do it.
you can enumerate Win32_Volume like this:
ManagementObjectSearcher ms = new ManagementObjectSearcher("Select * from Win32_Volume");
foreach(ManagementObject mo in ms.Get())
{
var guid = mo["DeviceID"].ToString();
if(guid == myGuid)
return mo["DriveLetter"];
}
Volume size, etcetera is easy. Just use the normal Win32 methods. Any function that accepts
"C:"as a drive will also accept the volume GUID path (because that’s what a\\?\Volume{XXX}is properly called).The “drive letter” is a bit trickier as there may be 0, 1 or more drive letters. You need to call
FindFirstVolumeMountPoint / FindNextVolumeMountPoint / FindVolumeMountPointCloseto get all of them.