【发布时间】:2014-01-28 23:54:09
【问题描述】:
我的应用程序与一个简单的 USB 设备通信如下:
应用使用 WriteFile (kernel32.dll) 向 USB 设备发送命令(每个 2 或 3 个字节)。
对于发送的每个命令,USB 设备都会发送一个简短的响应,PC 使用 ReadFile (kernel32.dll) 接收该响应。
读取和写入是异步完成的,使用 GetOverlappedResult 来检查操作的状态。
在 3 台 PC 中的 2 台上进行测试,应用程序和设备完美运行:所有响应都 100% 可靠地接收。
在第三台 PC 上的相同测试下,大约 50% 的 ReadFile 请求没有返回任何数据 - 状态永远保持为挂起 (ERROR_IO_INCOMPLETE)。
换句话说,大约每发送 2 个命令,就会收到一个响应。
由于该设备与其他 PC 完美配合,这让我相信问题可能发生在 Windows 内部,在 ReadFile 调用的底层代码中(我假设是一些较低级别的 USB 驱动程序代码)。
问题: 请您建议哪种调试工具对调查此问题最有用?以我目前的了解,ReadFile 的内部运作是相当不透明的。
遇到问题的电脑运行的是 Windows 8.0
【问题讨论】:
-
它是什么设备以及它使用什么驱动程序 (.sys) 文件?这可能会产生很大的不同。
标签: usb