我正在编写一个与USB设备通信的Windows实用程序。驱动程序是自定义驱动程序,由ADI公司(设备中使用的控制器芯片的制造商)提供。
我已经调整了他们的一个示例Windows应用程序,用于与设备通信。通过命名管道完成通信,可以是同步或异步。我在测试期间发现的问题是,如果在写入期间设备关闭(设备具有硬电源开关),则对WriteFile api功能的调用有时可能无法返回。使用异步或同步调用观察到同样的事情 - 我发现使用aysnc时没有发生超时。
发生这种情况后,我需要重启我的应用程序,因为处理USB通信的线程已挂起。
有没有办法阻止WriteFile在这种情况下无法返回?
由于 汤姆戴维斯。
答案 0 :(得分:0)
您可以cancel IO operations使用CancelSynchronousIo和CancelIoEx {{3}}。如果您在写入期间检测到通信线程意外阻塞,则可以执行此操作。
可能的交易破坏者: