修改发送DBT_DEVICEMREMOVECOMPLETE之前的时间
Modify time until DBT_DEVICEREMOVECOMPLETE is sent
是否有方法触发Windows的USB设备发现,以便更快地检测到已删除的设备?
我拔下了一个USB串行调制解调器(USB插头,而不是串行插头)。我想检测一旦检测到拔出就发送的DBT_DEVICEREMOVECOMPLETE
事件(这就是我的假设)。事件检测按需工作,有时在移除后1秒发送,有时在删除后几分钟发送。
有没有办法缩短刷新间隔,或者用另一种方法加快此事件的发送速度?
好吧,这里的问题是在Windows决定检测到删除后发送DBT_DEVICEMREMOVECOMPLETE,你不能影响这一点,至少在一般情况下不会。有各种因素使Windows更快或更慢地完成这项工作(设备类型、设备的当前"数据流"、设备本身),而且操作系统版本之间也有所不同。我发现在某些情况下,从注册表中删除之前插入该USB端口的USB设备的引用在一定程度上有所帮助(有各种实用程序)。
在极端情况下,由于这是一条Windows广播消息(未排队),在处理前一条消息之前,不会再发送另一条消息。因此,您可能根本不会收到它!要解决这个问题,请保持消息处理的快速和简单,并且在调试时不要在那里设置断点。
此外,拥有一个单独的Windows和线程来处理USB设备到达/移除通知可能会有所帮助。
但是,根据我的经验,轮询不会有帮助,因为主要问题似乎是Windows用于检测删除的标准。从该事件到您收到消息的时间很短。当然,在您的情况下,这可能不是真的——要找到答案,请使用SysInternal Process Monitor之类的工具。根据你在那里看到的情况,你可能会做一些事情来加快速度。
相关文章:
- C++为构建时间获取QDateTime的可靠方法
- 从持续时间构造std::chrono::system_clock::time_point
- 向量 <int> a {N, 0} 和 int arr a[N] = {0} 的时间复杂度有什么区别
- while循环中while循环的时间复杂度是多少
- 使用简单类型列表实现的指数编译时间.为什么
- 是否可以在编译时初始化数组,以便在运行时不会花费时间?
- 在已经使用Git的情况下减少编译时间
- 有没有一种方法可以创建一个带有哈希表的数据库,该哈希表具有恒定时间查找功能
- 如何将包含epoch时间的十六进制字符串转换为time_t
- 从文本文件中读取时钟时间和事件时间并进行处理
- 具有未知值时的时间复杂性
- 如何减少花费的时间
- C++在变量给定的指定时间内关闭电脑
- rcpp函数中的清理时间很长
- C++:floor unix时间戳到UTC月份
- 如何在c++中录制具有精确帧时间戳的视频
- 在两台机器之间进行时间戳的最佳c++chrono函数是什么
- KMP算法和LPS表构造的运行时间
- 为什么std::互斥需要很长的、非常不规则的时间来共享
- 使用Boost Interprocess创建托管共享内存需要很长时间