如果这与之前的问题类似,我很抱歉,但这是我刚刚注意到的。我可以检测到我的设备何时连接到系统(通过 USB)并正确捕获消息,但是如果我拔下并重新插入设备,尝试通过 创建文件() 函数总是返回错误: ERROR_GEN_FAILURE 31(0x1F) 翻译过来就是——连接到系统的设备无法运行, ,但是,这是在收到后尝试的 DBT_DEVICEARRIVAL 消息由 微软的 自己的定义说“设备或媒体已插入并且现在可用”。我相信这里发生的情况是,该错误更多地与设备未准备好有关,即使它被报告为已准备好,因为如果我再次重新枚举系统上的设备列表,则该设备已准备好。还有其他人遇到过并解决了这个问题吗?或者我遗漏/忽略了什么?

有帮助吗?

解决方案

在我看来,处理这个问题最简单的方法是通过 WMI。

看这里: http://dotnetslackers.com/community/blogs/basharkokash/archive/2008/02/06/usb-port-insert-remove-detection-using-wmi.aspx

我过去曾使用 WMI 进行 USB 驱动器检测,它非常简单,并且回调使事情变得非常干净

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top