我正在为一个USB3设备编写一个使用WDF (KMDF)的Windows设备驱动程序,该设备一次传输大量的数据。我已经编写了一个用户级的应用程序来测试这个功能,并且在大多数情况下,一切都是正常的。
我遇到的问题是这样的:我发现当我强制关闭(从cmd窗口CTRL+C)中间传输应用程序时,在取消时正在进行的数据传输立即停止,并且主机似乎简单地停止与该端点的通信。我在USB总线跟踪中观察到了这一点。请求在函数驱动程序中以"STATUS_CANCELLED“的形式返回
我查看了其他类似的第三方设备,并在这些设备上运行了它们的测试应用程序,发现当我在数据传输过程中杀死它们的测试应用程序时,传输会在应用程序关闭之前完成。
我的问题是:
当应用程序关闭时,Windows如何/何时决定终止正在进行的请求?
有没有办法将请求标记为“不可取消”?我已经搜索了文档,但没有发现任何建议我需要做些什么来防止请求在传输过程中被取消的问题。
任何见解都很感谢,谢谢。
发布于 2013-03-08 02:43:09
这不是关于设备驱动程序;而是关于控制台应用程序handles the Ctrl-C event的方式。控制台应用程序必须捕获Ctrl-C事件,并等待传输完成后才能退出。
https://stackoverflow.com/questions/15279142
复制相似问题