QueryDosDevice(L"E:", DeviceName, MAX_PATH);
(E:是SD卡)卷物理驱动
设备名称是 “\设备\ HarddiskVolume3”
如何 “转换” 它有点像"\\.\PHYSICALDRIVE1"
QueryDosDevice(L"E:", DeviceName, MAX_PATH);
(E:是SD卡)卷物理驱动
设备名称是 “\设备\ HarddiskVolume3”
如何 “转换” 它有点像"\\.\PHYSICALDRIVE1"
卷由一个或多个驻留在磁盘上的分区组成。因此,E:不一定映射到系统中的单个磁盘(认为软件RAID)。
将卷映射到Win32中PhysicalDrive名称的方式是首先打开该卷,然后发送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链接,所以你可以的sprintf与数字 “\\。\ PhysicalDrive%d”
斯科特
由于无论如何,你正在使用WMI,从Win32_LogicalDiskToPartition
开始。在Win32_LogicalDisk
一侧,标题将是驱动器号。然后使用Win32_DiskDriveToDiskPartition
来查看哪个物理驱动器拥有该分区。
什么是你的目标是什么?你为什么要把它转换成这种格式?或者你只是想获得设备的全球唯一索引? – 2010-09-29 17:27:17
它不是一个驱动器,它确实只是一个音量。 – 2010-09-29 17:30:27
我想用WMI获取一些信息。我需要知道,所以我可以与Win32_DiskDrive类中的DeviceID匹配 – Cornwell 2010-09-29 17:31:26