Как получить букву диска для DevicePath - PullRequest
4 голосов
/ 08 июня 2010

Я использую Win32 API.

На самом деле я не понимаю, как получить букву диска для DevicePath USB-накопителя.

Можете ли вы объяснить это мне

(у меня есть SP_DEVICE_INTERFACE_DETAIL_DATA DevicePath

используя этот путь к устройству, я получаю VID и PID устройства USB

путь к моему устройству выглядит следующим образом

"\? \ USB # vid_1a8d & pid_1000 # 358094020874450 # {a5dcbf10-6530-11d2-901f-00c04fb951ed}"

Есть ли способ привязать ПИСЬМО ПРИВОДА к ПУТИ УСТРОЙСТВА

, пожалуйста, помогите мне сопоставить букву диска с DevicePath)

Спасибо за любую помощь.

Ответы [ 2 ]

6 голосов
/ 08 июня 2010

Ссылка , которую я указал в вашем другом вопросе, дает вам всю информацию, необходимую для этого.В полупсевдокоде:

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 голос
/ 08 июня 2010

Посмотрите на это, может быть, это поможет (я не думаю, что есть простой способ сделать это ...)

http://msdn.microsoft.com/en-us/library/cc542456(VS.85).aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...