我正在使用Win32 API。

真的,我不明白如何获取USB内存棒的DevicePath的驱动器号。

你能给我解释一下吗

(我拥有的是SP_DEVICE_INTERFACE_DETAIL_DATA DevicePath

使用此设备路径我得到USB设备的VID和PID

我的设备路径如下所示

“\?\usb#vid_1a8d&pid_1000#358094020874450#{a5dcbf10-6530-11d2-901f-00c04fb951ed}”

有什么方法可以将DRIVE LETTER映射到我的设备路径

因此,请帮助我将驱动器号映射到DevicePath)

谢谢你的帮助。

最佳答案

我在其他问题中提供的link为您提供了执行此操作所需的所有信息。在半伪代码中:

DiskDevice = CreateFile(DiskDevicePath);
DiskDeviceNumber = DeviceIoControl(DiskDevice, IOCTL_STORAGE_GET_DEVICE_NUMBER);
for each VolumeDevicePath in GetLogicalDriveStrings
    VolumeDevice = CreateFile(VolumeDevicePath);
    VolumeDeviceNumber = DeviceIoControl(VolumeDevice, IOCTL_STORAGE_GET_DEVICE_NUMBER);
    if(VolumeDeviceNumber == DiskDeviceNumber)
        // volume (i.e. "G:") corresponding to VolumeDevicePath resides on disk (i.e. "XYZ USB Storage Device") corresponding to DiskDevicePath

我不确定100%(已经有一段时间)了,但是我认为磁盘设备(GUID_DEVINTERFACE_DISK)是USB设备(GUID_DEVINTERFACE_USB_DEVICE)的子级。无论如何,我认为DiskDevicePath必须是磁盘设备(而不是USB设备)的路径。

09-11 19:47
查看更多