与USB设备通话时,WriteFile有时会挂起

时间:2011-08-18 09:45:23

标签: windows winapi usb driver

我正在编写一个与USB设备通信的Windows实用程序。驱动程序是自定义驱动程序,由ADI公司(设备中使用的控制器芯片的制造商)提供。

我已经调整了他们的一个示例Windows应用程序,用于与设备通信。通过命名管道完成通信,可以是同步或异步。我在测试期间发现的问题是,如果在写入期间设备关闭(设备具有硬电源开关),则对WriteFile api功能的调用有时可能无法返回。使用异步或同步调用观察到同样的事情 - 我发现使用aysnc时没有发生超时。

发生这种情况后,我需要重启我的应用程序,因为处理USB通信的线程已挂起。

有没有办法阻止WriteFile在这种情况下无法返回?

由于 汤姆戴维斯。

1 个答案:

答案 0 :(得分:0)

您可以cancel IO operations使用CancelSynchronousIoCancelIoEx {{3}}。如果您在写入期间检测到通信线程意外阻塞,则可以执行此操作。

可能的交易破坏者:

  • 仅适用于Windows Vista及更高版本
  • 司机必须支持取消