Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
0 / 0 / 0
Регистрация: 14.10.2014
Сообщений: 57

"Связывание" USB-устройства и буквы логического диска

15.10.2014, 12:46. Показов 2613. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день

Задача: необходимо вывести список USB-устройств примерного вида
Code
1
2
3
4
USB-устройство ввода              USB\VID_046D&PID_C03E\6&2EB311D1&0&3
Запоминающее устройство для USB   USB\VID_152D&PID_2329\5F1DFFFFFFFF  (логические диски: G, H)
Validity Sensor (VFS495)          USB\VID_138A&PID_003F\00A00AA59090
...
Перечислением USB устройств (SetupDiGetClassDevs -> SetupDiEnumDeviceInterfaces -> SetupDiGetDeviceInterfaceDetail -> DeviceIoControl(.., IOCTL_USB_GET_NODE_CONNECTION_NAME, ...) -> CM_Get_DevNode_Registry_Property/CM_Get_Device_ID) получаю DeviceDesc и Device_ID
Список дисков в системе и их типы легко получить по GetLogicalDrives -> GetDriveType

Вопрос: Как связать букву логического диска с устройством (строка 2 в примере)

PS. Использую C, но в форуме нет раздела "C и WinAPI" (непринципиально, как мне кажется)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.10.2014, 12:46
Ответы с готовыми решениями:

Определение буквы диска по хэндлу устройства
День добрый, второй день копаюсь, в инете часто встречается код нахождения флешек для последующего их извлечения: hDevInfoSet :=...

Для SATA диска выводится иконка USB-устройства в трее
Поставил винду (WinXP), в компе стоит один диск - WD SATA 400Gb (он же системный). Винда зачем-то для него выводит иконку в трее - как для...

Как получить доступ к USB устройству, которое подключается без буквы диска?
Приветствую, знатоки. Как получить доступ к USB-устройству, а именно смартфону, чтобы копировать с него файлы на компьютер? Смартфон...

5
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
15.10.2014, 19:04
Получить пути к USB накопителям
1
0 / 0 / 0
Регистрация: 14.10.2014
Сообщений: 57
15.10.2014, 19:21  [ТС]
Убежденный,
К сожалению, пример не показывает, как связать букву диска с именем устройства вида USB\VID_152D&PID_2329\5F1DFFFFFFFF (вероятно, с ним можно связать любой из трех оставшихся?)
DeviceVolumeName: \\?\Volume{9917eda9-4c73-11df-980a-00e04d22a2c4}\
DeviceVolumePath: H:\
DevicePhysicalName: \Device\HarddiskVolume4
DeviceInterfacePath: \\?\storage#volume#_??_usbstor#disk&ven_ generic&prod_usb_fl
ash_disk&rev_0.00#000000000000ec&0#{53f5 6307-b6bf-11d0-94f2-00a0c91efb8b}#{53f56
30d-b6bf-11d0-94f2-00a0c91efb8b}
Для устройства могу еще получить
Code
1
2
DRIVER: "{36fc9e60-c465-11cf-8056-444553540000}\0021"
PHYSICAL_DEVICE_OBJECT_NAME:    "\Device\000000aa"
но мне это мало помогло :-)
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
15.10.2014, 19:49
Посмотрите еще вот эту тему, там автор в последних сообщениях
выкладывал один любопытный рецептик:
Получение информации о накопителе, с которого запущена система

(у меня до темы связывания дисковых устройств с буквами дисков
все руки никак не дойдут).
0
0 / 0 / 0
Регистрация: 14.10.2014
Сообщений: 57
17.10.2014, 11:12  [ТС]
Метод интересен, но DeviceIoControl(IOCTL_STORAGE_GET_DEVICE _NUMBER) для устройства вида \\?\USB#VID_152D&PID_2329#5F1DFFFFFFFF#{ a5dcbf10-6530-11d2-901f-00c04fb951ed} не возвращает структуру STORAGE_DEVICE_NUMBER.
Возвращает для устройства вида \\?\usbstor#disk&ven_storejet&prod_trans cend#5f1dffffffff&0#{53f56307-b6bf-11d0-94f2-00a0c91efb8b}, но это приводит вновь к связыванию между собой уже этих двух имен...

Подозреваю, что их можно связать через DriverKeyName (SPDRP_DRIVER/CM_DRP_DRIVER), но уж больно громоздко получится
Проверил - не получится...

Добавлено через 17 часов 21 минуту
Единственный найденный пока вариант: связать по серийному (?) номеру (в данном случае 5F1DFFFFFFFF)
1. \\?\USB#VID_152D&PID_2329#5F1DFFFFFFFF#{a5dcbf10-6530-11d2-901f-00c04fb951ed}
2. \\?\usbstor#disk&ven_storejet&prod_trans cend#5f1dffffffff&0#{53f56307-b6bf-11d0-94f2-00a0c91efb8b}
0
0 / 0 / 0
Регистрация: 14.10.2014
Сообщений: 57
20.10.2014, 13:16  [ТС]
Все оказалось достаточно просто:
связь \\?\USB#VID_152D&PID_2329#5F1DFFFFFFFF#{ a5dcbf10-6530-11d2-901f-00c04fb951ed} ->
\\?\usbstor#disk&ven_storejet&prod_trans cend#5f1dffffffff&0#{53f56307-b6bf-11d0-94f2-00a0c91fb8b}
через CM_Get_Child

Далее получаем IOCTL_STORAGE_GET_DEVICE_NUMBER, как и для логических дисков, и задача решена.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.10.2014, 13:16
Помогаю со студенческими работами здесь

Переводить команды USB WIFI Адаптера через компьютер по USB-USB для устройства
name: как передавать сигнал от требующего установку драйверов USB WIFI Адаптера через компьютер по USB-USB папа-папа кабелю для устройства...

При запуске системы отключаются все USB-устройства, в т.ч. устройства ввода
При запуске видовс 8 появляется экран выбора учетки и сразу отключаются клавиатура и мышь, они подключены к usb. Пробывал менять порты не...

Алгоритм функционирования логического устройства
Помогите пожалуйста очень прошу сделать задание. По шине, состоящей из четырех проводников , передается информация в виде двоичного...

Периодически отваливаются USB мышки, другие USB устройства работают нормально
Добрый день. Проблема началась где-то недели три назад. Есть две мышки A4 Tech X750bf и запасная G-cube. Работал с мышкой через usb2 ...

Не работают USB-порты (Сбой запроса дескриптора USB устройства (код 43) )
привет всем.тема такая:комп не мог определить устройство (Сбой запроса дескриптора USB устройства (код 43) ) и полез в гугл.ншёл сайт...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2. Данные берутся из. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru