是否有办法触发Windows的USB设备发现,以便更快地检测到删除的设备?
我有一个USB串口调制解调器,我拔下(USB插头,而不是串口)。我想检测一旦检测到拔出时发送的DBT_DEVICEREMOVECOMPLETE
事件(这就是我的假设)。事件的检测按需要工作,有时在移除后1s发送,有时在移除后几分钟发送。
有没有办法减少刷新间隔,或者其他方法可以让这个事件更快地发送?
答案 0 :(得分:1)
嗯,这里的问题是在Windows决定检测到删除后发送DBT_DEVICEREMOVECOMPLETE,你不能影响它,至少在一般情况下不会。有各种各样的事情使Windows更快或更慢(设备的类型,设备的当前“数据流”,设备本身),并且它也在OS版本之间变化。在某些情况下,我发现在某种程度上有助于从注册表中删除之前插入USB端口的USB设备的引用(有各种实用程序)。
极端情况下,由于这是一个Windows广播消息(未排队),因此在处理上一个消息之前不会再发送另一个消息。因此,你根本不会收到它!要解决这个问题,请保持消息处理快速简单,并且不要在调试时设置断点。
此外,为处理USB设备到达/删除通知的特定目的而单独使用Windows和线程可能有所帮助。
但是,根据我的经验,民意调查无济于事,因为主要问题似乎是Windows用来检测删除的标准。从该事件到收到消息的时间很短。当然,在你的情况下,这可能不是真的 - 要找出,使用像SysInternals Process Monitor这样的工具。根据您所看到的情况,您可以采取一些措施来加快速度。