Как определить, к какому порту подключено USB-устройство? - PullRequest
5 голосов
/ 06 мая 2010

Моё приложение c # должно управлять несколькими USB-устройствами, которые являются идентичным продуктом одного и того же производителя.

Если пользователь подключает 3 моих устройства, а затем отключает одно из них, мне нужно знать, какое из3 устройства были отключены.

Однако, когда я регистрирую устройства и получаю уведомления WM_DEVICECHANGE, данные, возвращаемые из DBT_DEVTYP_DEVICEINTERFACE, идентичны для каждого из устройств.

Если бы я мог получить информацию о USB-порте, когда устройстваприбыть или быть удаленным, это решило бы мою проблему, но я не могу найти способ сделать это.

Есть предложения?

1 Ответ

2 голосов
/ 06 мая 2010

Я ничего не знаю о C #, но в обычном C + Win32 вы можете использовать функции SetupAPI , чтобы перечислить шину и проверить все устройства на шине. Если вы перечислите хост-мост, вы сможете найти ваши устройства в иерархии USB. В той статье, на которую я ссылался, показано, как использовать API, и если вы посмотрите на системный вызов SetupDiGetClassDevs (), есть опция для системной шины USB (т. Е. Параметр 2, «Перечислитель»).

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

Я знаю, что Microsoft постепенно представляет Win32 API как классы .NET, но я не уверен насчет этого API.

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