Cor*_*ell 6 c c++ windows winapi hard-drive
QueryDosDevice(L"E:", DeviceName, MAX_PATH);
Run Code Online (Sandbox Code Playgroud)
(E:是SD卡)
DeviceName是"\ Device\HarddiskVolume3"
如何将其"转换"为类似的东西 "\\.\PHYSICALDRIVE1"
sno*_*one 16
卷由一个或多个驻留在磁盘上的分区组成.因此,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;
Run Code Online (Sandbox Code Playgroud)
范围中包含磁盘编号:
typedef struct _DISK_EXTENT {
DWORD DiskNumber;
LARGE_INTEGER StartingOffset;
LARGE_INTEGER ExtentLength;
} DISK_EXTENT, *PDISK_EXTENT;
Run Code Online (Sandbox Code Playgroud)
DiskNumber是PhsyicalDriveX链接的内容,因此您可以使用"\\.\ PhysicalDrive%d"sprintf该数字
斯科特
| 归档时间: |
|
| 查看次数: |
4582 次 |
| 最近记录: |