2010-08-04 3 views
0

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

+0

Вы можете дать ключ к пониманию того, что OS вас говорят - это звучит как какая-то версия Windows, но кто знает? (Подсказка: теги полезны здесь) –

+0

Я нахожусь в Windows 7 32bit –

+1

Работает ли он так, как ожидалось, если вы * не * отключите и снова подключите? Похоже, вы пытаетесь работать со старой ссылкой, когда вам действительно нужен новый, когда устройство снова подключается. – Jay

ответ

0

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

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

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

+0

Извинения Я ничего не знаю о WMI –

+0

Да, я тоже не в первый раз устал. Однако взгляните на опубликованную статью. Это просто. –

+0

Извините, но это не соответствует действительности. Описанное событие указывает только на то, что устройство подключено к системе и, возможно, какая-то информация может быть получена с устройства. Но вопрос был «когда он готов к использованию». В моем optinion это включает в себя, что драйвер был успешно запущен, так что я могу использовать устройство. Но событие WMI не включает это. Например: я подключил устройство FTDI и использовал WMI для обнаружения, когда он был присоединен. Он длится около 5 секунд между событием WMI и временем, которое я действительно могу открыть. – 0xBADF00D

Смежные вопросы