【问题标题】:Debugging an intermittently unresponsive USB device调试间歇性无响应的 USB 设备
【发布时间】: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


【解决方案1】:

你可以试试DebugView。以管理员身份运行。

转到“Capture”,启用“Capture Kernel”,启用“Enable Verbose Kernel Output”。

这可能有助于调查内核级别的错误(如果发生)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-25
    • 1970-01-01
    • 1970-01-01
    • 2011-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多