0
如果我像WinUSB_ReadPipe()启动时那样调用WinUSB_AbortPipe(),我会陷入死锁状态。我运行了提供here的调试跟踪日志。以下是发生问题的日志中的最后5行。我认为ReadPipe必须错过信号,AbortPipe正在等待ReadPipe完成。WinUSB_AbortPipe挂起
[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端点异步读入缓冲区。我发现最好将读取操作的超时设置为无限,因为当我导致STALL发生时驱动程序会讨厌它(遇到其他问题)。所以我需要让断开序列导致线程醒来,意识到我们需要关闭。有什么方法可以安全地做到这一点?