Тома состоят из одного или нескольких разделов, которые находятся на дисках. Таким образом, E: не обязательно отображается на один диск в системе (например, программный RAID).
Способ сопоставления томов с именами PhysicalDrive в Win32 состоит в том, чтобы сначала открыть том, а затем отправить IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS. Это даст вам структуру, которая имеет одну запись DISK_EXTENT для каждого раздела, охватываемого томом:
typedef struct _VOLUME_DISK_EXTENTS {
DWORD NumberOfDiskExtents;
DISK_EXTENT Extents[ANYSIZE_ARRAY];
} VOLUME_DISK_EXTENTS, *PVOLUME_DISK_EXTENTS;
В экстентах есть номер диска:
typedef struct _DISK_EXTENT {
DWORD DiskNumber;
LARGE_INTEGER StartingOffset;
LARGE_INTEGER ExtentLength;
} DISK_EXTENT, *PDISK_EXTENT;
DiskNumber - это то, что входит в ссылку PhsyicalDriveX, так что вы можете просто набрать это число с помощью "\\. \ PhysicalDrive% d"
-Скотт