私は、要求を発行したCPUにCompleteRequestの完了をアピールしようとしています。 FdoDeviceControlまたは他の方法で要求を発行したCPUを取得して、ディスパッチキューに入る前に要求がどこから来たのかを調べる方法はありますか?WDFREQUESTを作成したCPUを取得できますか?
答えて
DPCルーチンに入ると、リクエストの発信元を特定することができません。要求をDPCキューに入れる前に、KeGetCurrentProcessorNumberEx()を呼び出す必要があります。リクエストはIRPだと思います...?
David、KMDFを使用して要求を処理しているので、IRPはWDFREQUEST構造体にラップされています。要求が現れた時点で、すでにI/Oキューを通過しています。 –
KMDFを使用している場合は、WdfDeviceInitSetIoInCallerContextCallback()を呼び出す必要があります。これにより、I/Oリクエストがkmdf I/Oキューに置かれる前にI/Oリクエストを見ることができます。I/Oイニシエータのプロセスコンテキストで実行され、I/Oイニシエータのプロセスコンテキストで実行されます。 O.そこからKeGetCurrentProcessorNumberEx()を呼び出して結果を保存することができます。 –
David David、ありがとうございました。関連するノートでは、EvtDeviceWdmIrpPreprocessもクライアントのコンテキストで呼び出されていると私は推測しています(私は保証された転送進行キューを使用していますので、常にSetIoInCallerContextCallbackのように見えるコールを必ず取得する必要があります) –
- 1. Java 7でパターンを取得または作成しますか?
- 2. モーダルボックスを作成したリンクのIDを取得しますか?
- 3. filestreamから取得したファイルの作成日時を取得できますか?
- 4. シェルスクリプトでCPU使用率を取得しますか?
- 5. visibilityTimeoutで作成されたストレージキュー内のメッセージを取得できますか?
- 6. Firestoreを使用してbatch()で作成されたドキュメントの生成IDを取得できますか?
- 7. リストを作成しても文字列を取得できますか?
- 8. Win32 C++:プロセスのCPUアフィニティを取得しますか?
- 9. 作成したテーブル名を取得
- 10. 認証トークンを取得した後にHTTPリクエストを作成できません
- 11. KotlinビルドはSquidDatabaseで作成したクラスを取得できません
- 12. 「アプリケーションサービスの作成」ダイアログで情報を取得できません。作成ボタンが無効にされました
- 13. 各CPUの使用率をどのように取得できますか?
- 14. 動的に作成されたフォームからフォームを取得できません
- 15. imagepng()で作成したPNGからAlphaを取得
- 16. ユーザオブジェクトを作成した後で正しい方法で取得できない
- 17. 作成するhas_and_belongs_to_manyアソシエーションを取得できません
- 18. C#で動的に作成されたボタンのテキストを取得しますか?
- 19. 時間範囲内で作成されたMySQLレコードを取得しますか?
- 20. jqueryで作成された動的テキストボックスからデータを取得します
- 21. YII - 作成ページで見つかったレコードを取得します。
- 22. 名前が「〜」のフォルダを作成しましたが、どうやって取得できますか?
- 23. ValueErrorを取得しています:「マルチインデックスでタプルインデックスを作成できるだけ」
- 24. JSESSIONID値を取得し、AngularJSでCookieを作成します。
- 25. JGitはcommitIDが作成されたブランチを取得します
- 26. JSONから取得したデータの配列を作成する
- 27. コンポーネントを作成中、要素タイプを取得できません
- 28. ADO.netから取得してwebApiを作成します
- 29. CでLinuxのCPU数を取得
- 30. CMD/POWERシェルでCPU温度を取得
このディスパッチが発生した後にCPUを取得することは、もちろん簡単です。しかし、コールバック関数が問題と同じコアで動作することを保証していますか? –