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 に答える