我正在使用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映射到我的DEVICE PATH
所以请帮我把驱动器号映射到DevicePath)
感谢您的帮助。
答案 0 :(得分:6)
我在您的其他问题中提供的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设备)。
答案 1 :(得分:1)
看看这个,也许它会有所帮助(我认为没有一种简单的方法可以做到这一点......)
http://msdn.microsoft.com/en-us/library/cc542456(VS.85).aspx