如何将 USB 存储设备路径映射到物理驱动器?
How do I mapping usb storage device path to physicaldrive?
我从
获取 USB 设备路径
SetupDiGetDeviceInterfaceDetail()
而且我可以获得设备路径,例如
\?\usbstor#disk&ven_&prod_2307_pram&......
但我想将设备路径映射到物理驱动器
-> \physicaldrive0,1,2......
或反向我可以将物理驱动器映射到设备路径
有什么办法吗?
哦,我找到了。
将 HANDLE 放入 DeviceIoControl 并使用 IOCTL_STORAGE_GET_DEVICE_NUMBER
STORAGE_DEVICE_NUMBER number; //use this to get disk numbers
DWORD readed; // discard results
BOOL result = DeviceIoControl(
hdl, // handle to device
IOCTL_STORAGE_GET_DEVICE_NUMBER, // dwIoControlCode
NULL, // lpInBuffer
0, // nInBufferSize
&number, // output buffer
sizeof(number), // size of output buffer
&readed, // number of bytes returned
NULL // OVERLAPPED structure
);
并且 number.DeviceNumber 是物理驱动器编号
我从
获取 USB 设备路径SetupDiGetDeviceInterfaceDetail()
而且我可以获得设备路径,例如
\?\usbstor#disk&ven_&prod_2307_pram&......
但我想将设备路径映射到物理驱动器
-> \physicaldrive0,1,2......
或反向我可以将物理驱动器映射到设备路径
有什么办法吗?
哦,我找到了。 将 HANDLE 放入 DeviceIoControl 并使用 IOCTL_STORAGE_GET_DEVICE_NUMBER
STORAGE_DEVICE_NUMBER number; //use this to get disk numbers
DWORD readed; // discard results
BOOL result = DeviceIoControl(
hdl, // handle to device
IOCTL_STORAGE_GET_DEVICE_NUMBER, // dwIoControlCode
NULL, // lpInBuffer
0, // nInBufferSize
&number, // output buffer
sizeof(number), // size of output buffer
&readed, // number of bytes returned
NULL // OVERLAPPED structure
);
并且 number.DeviceNumber 是物理驱动器编号