Задать вопрос
DVamp1r3
@DVamp1r3
Java/PHP программист

USB. Узнать метку диска по серийному номеру

Тривиальная задача: подключаем в Windows USB-носитель, на рабочем столе отображается ярлык.
На данный момент узнаю о подключении устройства через сообщение WM_DEVICECHANGE. Соответственно, получаю структуры DEV_BROADCAST_DEVICEINTERFACE и DEV_BROADCAST_HDR. Вопрос, как узнать метку диска, связанную с устройством, исходя из того, что имею? Копал в сторону функции DeviceIoControl, но как ни вертел, получалась ошибка 50 (некорректный запрос). Также рассматривал вариант хранить метки дисков в массиве wchar_t, а при подключении проходить по списку устройств и узнавать, какая буква добавлена, но такой вариант мне кажется не совсем элегантным =)

З.Ы. Через CreateFile получаю дескриптор устройства:
// rawPath = L"\\?\USB#VID_0951&PID_1625#0019E06B0845A93187600199#{a5dcbf10-6530-11d2-901f-00c04fb951ed}" HANDLE hf = CreateFile(rawPath, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, NULL, NULL);
Вообще делал для работы с DeviceIoControl, но вдруг есть метод обойтись без этой функции с использованием HANDLE устройства.
  • Вопрос задан
  • 4368 просмотров
Подписаться 2 Оценить Комментировать
Решения вопроса 1
@Flexz
Detecting Media Insertion or Removal — не оно?

Еще получить подробную информацию о дисках можно через WMI: Win32_LogicalDisk.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
DVamp1r3
@DVamp1r3 Автор вопроса
Java/PHP программист
--
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы