Как надежно различать два одинаковых USB-устройства в Window
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 08.01.25 18:55
Оценка:
Как известно, два одинаковых USB-устройства, не имеющих внутренних состояний, которые можно было бы использовать в качестве идентификаторов, из любой системы выглядят одинаково, и система не имеет возможности определить, какое из устройств куда подключено. Для адресации таких устройств обычно генерируются внутренние уникальные идентификаторы на основе физического адреса (контроллер/хаб/порт).

У меня сейчас нет задачи различать именно сами устройства — достаточно было бы адресовать их по подключению. Я наивно полагал, что свойство Location information (SPDRP_LOCATION_INFORMATION) как раз и является уникальным и постоянным идентификатором устройства. У меня на ноутбуке один внутренний хаб, и для всех устройств всегда Hub_#0001.

Но отправил программу пользователю, а у него между перезагрузками Location Information меняется: Port_#0001.Hub_#0003, Port_#0001.Hub_#0007, Port_#0001.Hub_#0004, Port_#0001.Hub_#0005. Судя по всему, у контроллера несколько хабов, и они определяются в случайном порядке.

Какие из доступных свойств устройства можно надежно и предсказуемо (чтоб не менялись между перезагрузками) использовать для адресации?

P.S. Уточню: требуется не способ адресации заранее неизвестного устройства в заранее неизвестной системе, а постоянный адрес уже известного устройства. То есть, в первый раз устройство будет найдено любым из доступных в системе способов (по имени или другим свойствам), а уже затем нужно определить его "физический адрес", чтобы при следующем запуске (в том числе после выключения/перезагрузки) уверенно и предсказуемо найти его уже по адресу — разумеется, при условии, что оно подключено к тому же самому разъему.
Отредактировано 08.01.2025 19:06 Евгений Музыченко . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.