QueryDosDevice(L"E:", DeviceName, MAX_PATH);
(E: jest karta SD)Volume do dysku fizycznego
DeviceName jest "Device \ \ HarddiskVolume3"
Jak "przerobić" go do czegoś, jak "\\.\PHYSICALDRIVE1"
QueryDosDevice(L"E:", DeviceName, MAX_PATH);
(E: jest karta SD)Volume do dysku fizycznego
DeviceName jest "Device \ \ HarddiskVolume3"
Jak "przerobić" go do czegoś, jak "\\.\PHYSICALDRIVE1"
Woluminy składają się z jednej lub więcej partycji, które znajdują się na dyskach. Tak więc, E: niekoniecznie mapuje się na pojedynczy dysk w systemie (pomyśl o oprogramowaniu RAID).
Sposób w jaki mapujesz woluminy do nazw PhysicalDrive w Win32, to najpierw otworzyć wolumin, a następnie wysłać IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS. To daje strukturę, która ma jeden wpis DISK_EXTENT dla każdej partycji, że objętość jest rozpięta:
typedef struct _VOLUME_DISK_EXTENTS {
DWORD NumberOfDiskExtents;
DISK_EXTENT Extents[ANYSIZE_ARRAY];
} VOLUME_DISK_EXTENTS, *PVOLUME_DISK_EXTENTS;
Zakresy mieć numer dysku w nich
typedef struct _DISK_EXTENT {
DWORD DiskNumber;
LARGE_INTEGER StartingOffset;
LARGE_INTEGER ExtentLength;
} DISK_EXTENT, *PDISK_EXTENT;
DiskNumber to co idzie do PhsyicalDriveX Link, więc można po prostu sprintf że numer z "\\. \ PhysicalDrive% d"
-Scott
Od mimo to używasz usługi WMI, zacznij od Win32_LogicalDiskToPartition
. Po stronie Win32_LogicalDisk
, Podpis będzie literą dysku. Następnie użyj Win32_DiskDriveToDiskPartition
, aby zobaczyć, jaki dysk fizyczny zawiera tę partycję.
Jaki jest Twój cel? Dlaczego chcesz przekonwertować go na taki format? A może chcesz uzyskać globalnie unikalny indeks urządzenia? –
To nie jest napęd, to naprawdę tylko objętość. –
Próbuję uzyskać pewne informacje z WMI. Muszę wiedzieć, że mogę dopasować do DeviceID z klasy Win32_DiskDrive – Cornwell