Usb Windows何时取消飞行中的WDF请求?

Usb Windows何时取消飞行中的WDF请求?,usb,driver,device-driver,kmdf,wdf,Usb,Driver,Device Driver,Kmdf,Wdf,我正在为一个USB3设备编写一个使用WDF(KMDF)的Windows设备驱动程序,该设备一次传输大量数据。我已经编写了一个用户级应用程序来测试这个功能,在大多数情况下,这些功能都可以正常工作 我遇到的问题是:我发现,当我强制关闭(cmd窗口中的CTRL+C)应用程序中间传输时,取消时正在进行的数据传输立即停止,主机似乎只是停止了与该端点的通信。我在USB总线跟踪上观察到了这一点。请求在函数驱动程序中返回为“状态\u已取消” 我查看了其他类似的第三方设备,并在这些设备上使用它们的驱动程序运行了它

我正在为一个USB3设备编写一个使用WDF(KMDF)的Windows设备驱动程序,该设备一次传输大量数据。我已经编写了一个用户级应用程序来测试这个功能,在大多数情况下,这些功能都可以正常工作

我遇到的问题是:我发现,当我强制关闭(cmd窗口中的CTRL+C)应用程序中间传输时,取消时正在进行的数据传输立即停止,主机似乎只是停止了与该端点的通信。我在USB总线跟踪上观察到了这一点。请求在函数驱动程序中返回为“状态\u已取消”

我查看了其他类似的第三方设备,并在这些设备上使用它们的驱动程序运行了它们的测试应用程序,发现当我在数据传输过程中杀死它们的测试应用程序时,传输会在应用程序关闭之前完成

我的问题:

当应用程序关闭时,Windows如何/何时决定终止正在运行的请求

有没有办法将请求标记为“不可取消”?我浏览了文档,但没有发现任何迹象表明我需要采取措施防止请求在传输过程中被取消


感谢您提供的任何见解。

这与设备驱动程序无关;这是关于控制台应用程序的方式。控制台应用程序必须捕获Ctrl-C事件,并等待传输完成后再退出。

我明白了。非常感谢。这在逻辑上对我来说是有意义的,但是驾驶员可以做些什么来增强健壮性呢?换句话说,我所描述的(“将事件标记为不可取消”)是可能的吗?设备驱动程序必须保持应用程序打开或“阻止”(因为它是进程的容器),我认为这将被视为“不良行为”。从用户的角度看,Ctrl-C表示“我想停止。现在”我不知道Windows是如何知道应用程序已经过时的;我怀疑某个句柄可能已失效,或者设备驱动程序从进程中收到一条消息,表明它正在退出。