1

我正在为 USB3 设备编写一个使用 WDF (KMDF) 的 Windows 设备驱动程序,该设备一次传输大块数据。我编写了一个用户级应用程序来测试这个功能,并且在大多数情况下,一切正常。

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

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

我的问题:

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

有没有办法将请求标记为“不可取消”?我已经搜索了文档,但没有发现任何迹象表明我需要做一些事情来防止请求在转移过程中被取消。

任何见解表示赞赏,谢谢。

4

1 回答 1

3

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

于 2013-03-07T18:43:09.023 回答