首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >卸下HID设备时,CancelIO会持续一分钟以上

卸下HID设备时,CancelIO会持续一分钟以上
EN

Stack Overflow用户
提问于 2015-11-16 22:03:32
回答 1查看 118关注 0票数 0

我正在为我的应用程序能够从HID条形码阅读器设备读取的模块工作。

它是一个Windows应用程序(在Windows10中测试过),我使用的是Visual C++。

为了阅读,我获取设备路径并使用FILE_FLAG_OVERLAPPED调用ReadFile,然后使用WaitForMultipleObjects等待讲座。如果我想要关闭应用程序,或者用户选择了另一个设备,那么我会触发第二个取消事件并调用CancelIO

到目前为止,good...everthing运行得很好。

现在,我想要检测用户是否删除了选定的HID设备...我注册了一个窗口并捕获DeviceChange事件。当我取消课程中的阅读并调用CancelIO时,这个函数需要一分钟以上的时间才能返回。在这种情况下(设备删除),我尽量不调用CancelIO,可以删除设备并再次连接它,当我关闭应用程序时,它会works....but,然后线程(负责读取的线程)需要一分钟以上的时间才能结束。所以我想,在某种程度上,应用程序正试图取消设备读取。

所以我的问题is....what当我检测到我正在读取的设备被移除时,我应该做什么?

提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2015-12-01 01:06:29

  1. 您是否注意到CancelIO只取消从同一个线程发出的IO?
  2. 您确定您不是在取消一个已经完成的IO度量,这在关机期间确实需要很长时间。可能是CloseHandle.
  3. Please做了一个简单的应用程序来演示这个问题。理想情况下,它应该只有main(),并在需要删除设备的地方有一个MessageBox()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33737261

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档