-
- Есть UsbView от мелкомягких, дескрипторы показывает, вроде как с сорсом. йцyкeн(50 знак., 02.09.2020 12:17, ссылка)
- Если WinAPI то SetupAPI. Пример тут -> - ir0407(02.09.2020 01:20, ссылка)
- Никак. Есть в библиотеке hidsdi.h/hid.lib функция BOOLEAN __stdcall
HidD_GetPhysicalDescriptor (...), но это дело добровольное - не захочет девайс отвечать на
этот запрос, то и не станет. Я уже пыталась спереть чужие
дескрипторы (у промышленного джойстика), но ничего не вышло. Да и у
своих девайсов я на этот вопрос не отвечаю, считая его нескромным
:). - Kceния(01.09.2020 22:05)
- Вы не правы! Да и причем здесь hid-device ?? вот есть программа
USBlyzer, которая вычитывает весь дескриптор, вот я могу назначить
и производителя и имя устройства и серийный номер и все это прога
видит Aleksey_75(1 знак., 01.09.2020 22:41, картинка)
- Если вопрошающий не указывает, какого типа у него девайс, то я имею
право считать его HID'ом: если не угадала - сам виноват. Программа
USBlyzer - это трассировщик, здесь человек нужен, чтобы ее логи
интерпретировать. Тогда как вопрос был задан в форме "Нужно из
своей программы ... вычитать его дескриптор", т.е. без ассистента в
виде человека. - Kceния(01.09.2020 23:52)
- Помоему вы не правы! Вопрошающий в данном случае хост, т.е винда,
она и запрашивает дескриптор устройства при подключении и получает
VID/PID из этого и определяет что это за устройство! когда винда не
распознает vid/pid в лучшем случае это будет устройство с именем
(вычитаном по дескриптору) но без дров, в худшем случае это будет
"неизвестное устройство". USBlyzerУ не нужен человек, он именно
отображает дескриптор устройства который винда вычитала! Есть у нас
здесь USB-гуру Aleksey_75(52 знак., 01.09.2020 23:59)
- Ксения! вам похоже куб затуманил моск! Aleksey_75(3383 знак., 02.09.2020 00:23)
- Помоему вы не правы! Вопрошающий в данном случае хост, т.е винда,
она и запрашивает дескриптор устройства при подключении и получает
VID/PID из этого и определяет что это за устройство! когда винда не
распознает vid/pid в лучшем случае это будет устройство с именем
(вычитаном по дескриптору) но без дров, в худшем случае это будет
"неизвестное устройство". USBlyzerУ не нужен человек, он именно
отображает дескриптор устройства который винда вычитала! Есть у нас
здесь USB-гуру Aleksey_75(52 знак., 01.09.2020 23:59)
- Если вопрошающий не указывает, какого типа у него девайс, то я имею
право считать его HID'ом: если не угадала - сам виноват. Программа
USBlyzer - это трассировщик, здесь человек нужен, чтобы ее логи
интерпретировать. Тогда как вопрос был задан в форме "Нужно из
своей программы ... вычитать его дескриптор", т.е. без ассистента в
виде человека. - Kceния(01.09.2020 23:52)
- Вы не правы! Да и причем здесь hid-device ?? вот есть программа
USBlyzer, которая вычитывает весь дескриптор, вот я могу назначить
и производителя и имя устройства и серийный номер и все это прога
видит Aleksey_75(1 знак., 01.09.2020 22:41, картинка)
- Что ты называешь дескриптором?
HKLM\SYSTEM\CurrentControlSet\Enum\USB смотри -- подходит? - fk0(01.09.2020 21:39, ссылка)
- спасибо, ща гляну! вообще дескриптором называю это (ссылка). Нужно
найти свое устройство (в данном случае VCP) не DDoSя наглухо все
компорты! Хочется автоматом искать свой девайс, вроде сделал,
определяется норм, но при не подключенном девайсе доступа до других
комов нет совсем))) Aleksey_75(6 знак., 01.09.2020 22:01, ссылка)
- Открывать и работать с не своими устройствами уж точно не нужно. То
чего я тебе дал в принципе должно быть достаточно для определения
номера своего порта. Вначале по PID/VID находишь нужное устройство,
потом там в разделе DeviceParameters есть PortName в котором имя
компорта. Всё! - fk0(01.09.2020 23:23, ссылка)
- )) ну да, я заделал так (убил все порты к подключению) так , нахожу
порт, открываю, отправляю запрос "Who are you ?" жду ответа 300мс,
если ответ не получен, запрашиваем следующий! Если мой девайс
откликнулся, при отсутствии обмена запросы идут каждые 2 сек. и
если девайс подключен все ок! но если запустили прогу без девайса,
все ком порты отвалились от подключения. Спасибо! Завтра с утреца
покурю инфу!!! PS! VID/PID кстати не канют!! нужно именно имя и
производителя из Aleksey_75(81 знак., 01.09.2020 23:32)
- Порты нужно закрывать. Работа с USB -- другой уровень абстракции,
точно ли тебе он нужен? Т.к. сулит дополнительные сложности. - fk0(01.09.2020 23:40)
- "Т.к. сулит дополнительные сложности" а как еще найти мой девайс
среди 100500 компортов ?? я попробовал решение в лоб, оно четко
определяет мой девайс, но завешивает все остальные комы системы - Aleksey_75(01.09.2020 23:49)
- У тебя тупо баг где-то с незакрытием портов. Метод постучаться в
каждый -- в целом ок. - fk0(01.09.2020 23:50)
- )) к примеру в системе 2 порта , т.е обращение к каждому будет
каждые 600мс, какой терминал и какой человек прочувствует свободный
порт Aleksey_75(1058 знак., 02.09.2020 00:06)
- Не надо раз в 600мс. Нужно один раз на старте и после обнаружения
каждого нового порта. Обнаруживать можно либо поллингом ветки
реестра (а не портов!), либо по методикам из ссылки (там разные
подходы, я плохо понял): - fk0(02.09.2020 00:12, ссылка)
- хм! А вот за это спасибо! Дельный совет! Спасибо!! - Aleksey_75(02.09.2020 00:18)
- Не надо раз в 600мс. Нужно один раз на старте и после обнаружения
каждого нового порта. Обнаруживать можно либо поллингом ветки
реестра (а не портов!), либо по методикам из ссылки (там разные
подходы, я плохо понял): - fk0(02.09.2020 00:12, ссылка)
- )) к примеру в системе 2 порта , т.е обращение к каждому будет
каждые 600мс, какой терминал и какой человек прочувствует свободный
порт Aleksey_75(1058 знак., 02.09.2020 00:06)
- У тебя тупо баг где-то с незакрытием портов. Метод постучаться в
каждый -- в целом ок. - fk0(01.09.2020 23:50)
- естественно , 300мс нет ответа , закрываем и идем дальше! Но все терминалы которыми я пользуюсь (Terminal 1,9b и Compump) говорят что все порты заняты )) - Aleksey_75(01.09.2020 23:48)
- "Т.к. сулит дополнительные сложности" а как еще найти мой девайс
среди 100500 компортов ?? я попробовал решение в лоб, оно четко
определяет мой девайс, но завешивает все остальные комы системы - Aleksey_75(01.09.2020 23:49)
- Порты нужно закрывать. Работа с USB -- другой уровень абстракции,
точно ли тебе он нужен? Т.к. сулит дополнительные сложности. - fk0(01.09.2020 23:40)
- )) ну да, я заделал так (убил все порты к подключению) так , нахожу
порт, открываю, отправляю запрос "Who are you ?" жду ответа 300мс,
если ответ не получен, запрашиваем следующий! Если мой девайс
откликнулся, при отсутствии обмена запросы идут каждые 2 сек. и
если девайс подключен все ок! но если запустили прогу без девайса,
все ком порты отвалились от подключения. Спасибо! Завтра с утреца
покурю инфу!!! PS! VID/PID кстати не канют!! нужно именно имя и
производителя из Aleksey_75(81 знак., 01.09.2020 23:32)
- нагуглилось что-то >>> - SciFi(01.09.2020 22:16, ссылка)
- Открывать и работать с не своими устройствами уж точно не нужно. То
чего я тебе дал в принципе должно быть достаточно для определения
номера своего порта. Вначале по PID/VID находишь нужное устройство,
потом там в разделе DeviceParameters есть PortName в котором имя
компорта. Всё! - fk0(01.09.2020 23:23, ссылка)
- спасибо, ща гляну! вообще дескриптором называю это (ссылка). Нужно
найти свое устройство (в данном случае VCP) не DDoSя наглухо все
компорты! Хочется автоматом искать свой девайс, вроде сделал,
определяется норм, но при не подключенном девайсе доступа до других
комов нет совсем))) Aleksey_75(6 знак., 01.09.2020 22:01, ссылка)