首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WinUSB_AbortPipe挂起

WinUSB_AbortPipe挂起
EN

Stack Overflow用户
提问于 2015-06-11 00:44:36
回答 1查看 418关注 0票数 0

如果我在WinUSB_ReadPipe()启动时调用WinUSB_AbortPipe(),就会进入死锁状态。我运行了here提供的调试跟踪日志。下面是日志中出现问题的最后5行。我认为ReadPipe一定是错过了信号,而AbortPipe正在等待ReadPipe的完成。

代码语言:javascript
复制
[0]4E34.4B58::06/09/2015-15:42:12.528 - IOCTL_WINUSB_READ_PIPE
[0]4E34.4B58::06/09/2015-15:42:12.528 - PIPE129: (00000019) The read has been added to the raw io queue
[0]4E34.4B58::06/09/2015-15:42:12.528 - PIPE129: (00000019) The read is being handled
[2]4E34.4ECC::06/09/2015-15:42:12.529 - IOCTL_WINUSB_ABORT_PIPE
[2]4E34.4B58::06/09/2015-15:42:12.529 - PIPE129: (00000019) Reading 64 bytes from the device

在我的设计中,我让In端点异步地读入缓冲区。我发现最好将读取操作的超时设置为无限大,因为当我导致延迟发生时,驱动程序会讨厌它(遇到其他问题)。因此,我需要让断开连接序列使线程唤醒,以意识到我们需要关闭。有什么方法可以安全地做到这一点吗?

EN

回答 1

Stack Overflow用户

发布于 2015-06-11 00:44:36

我的变通方法是调用WinUsb_ResetPipe()。这会导致WinUSB_ReadPipe()解除阻塞,并且似乎不会像WinUSB_AbortPipe()有时那样锁定。我拥有的唯一证据是成功地运行了几个小时的测试,所以我不能保证这是一个解决方案。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30762447

复制
相关文章

相似问题

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