Как определить присутствие определенного устройства

В приложении C #, каковы хорошие способы определения наличия определенного устройства, подключенного к компьютеру? Программно, конечно. Мне нужна поддержка Windows XP и 7.

Предпосылки

Мне дали огромное приложение C #, которое использует какое-то подключенное устройство. Устройства представляют собой специализированное оборудование и не предназначены для использования без программного обеспечения. Когда приложение C # запускается, оно ищет такие подключенные устройства и при необходимости связывается с ними. Может быть несколько подключенных устройств. Я не изучал исходный код поиска устройств. Устройства подключаются к ПК с помощью USB-кабеля или последовательного кабеля. Они отображаются как COM-порт в диспетчере устройств. Иногда между ПК и устройством может быть USB-концентратор или преобразователи последовательного интерфейса в USB.

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

Мне сказали изучить алгоритм поиска устройств и, если возможно, придумать лучшее решение и заменить текущую реализацию. Я раньше не выполнял подобных задач, и мне нужно узнать, как Windows управляет устройствами под капотом.

Как я могу найти определенные подключенные устройства на C #? Какие хорошие практики и что мне следует знать или избегать?

6
задан Andrew Barber 3 January 2012 в 05:08
поделиться