Как определить, готово ли к работе подключенное к системе устройство? - PullRequest
0 голосов
/ 04 августа 2010

Извините, если это похоже на предыдущий вопрос, но это то, что я только что заметил. Я могу определить, когда мое устройство подключено к системе (через usb), и правильно перехватить сообщение, однако, если я отключу и снова подключу устройство, попытка получить доступ к устройству с помощью функции CreateFile () всегда возвращает ошибка: ERROR_GEN_FAILURE 31 (0x1F) , что переводится на - Устройство, подключенное к системе, не работает , однако, после попытки получения сообщения DBT_DEVICEARRIVAL попытка * * * * * * * * * * * * * * * * * * * * * * * * * * * * *. * * * * * * * * * * * * * * * * *. * * * * * * * * * * * * *. Я полагаю, что здесь происходит то, что ошибка больше связана с тем, что устройство не готово, даже если о нем сообщают, что оно готово, потому что, если я снова перечислю список устройств в системе, устройство будет готово. Кто-нибудь еще сталкивался и преодолел эту проблему? Или я что-то упускаю / пропускаю?

1 Ответ

0 голосов
/ 04 августа 2010

Самый простой способ справиться с этим, IMO, - через WMI.

См. Здесь: http://dotnetslackers.com/community/blogs/basharkokash/archive/2008/02/06/usb-port-insert-remove-detection-using-wmi.aspx

В прошлом я использовал WMI для обнаружения USB-накопителя, и он мертвпростой и обратный вызов делает вещи довольно чистыми

...