RxPostToWorkerThread は、ワーカー スレッドのコンテキストでパラメーターとして渡されたルーチンを呼び出します。 WORK_QUEUE_ITEMのメモリは、呼び出し元によって割り当てられている必要があります。
構文
NTSTATUS RxPostToWorkerThread(
[in] IN PRDBSS_DEVICE_OBJECT pMRxDeviceObject,
[in] IN WORK_QUEUE_TYPE WorkQueueType,
[in] IN PRX_WORK_QUEUE_ITEM pWorkQueueItem,
[in] IN PRX_WORKERTHREAD_ROUTINE Routine,
[in] IN PVOID pContext
);
パラメーター
[in] pMRxDeviceObject
対応するネットワーク ミニ リダイレクター ドライバーのデバイス オブジェクトへのポインター。
[in] WorkQueueType
タスクの優先度を表す作業キューの種類。 このパラメーターには、次のいずれかの値を指定できます。
CriticalWorkQueue
リアルタイム優先度属性を持つシステム スレッドが作業項目を処理するキューにWORK_QUEUE_ITEMを挿入します。
DelayedWorkQueue
WORK_QUEUE_ITEMをキューに挿入します。キューには、変数の優先順位属性を持つシステム スレッドが作業項目を処理します。
HyperCriticalWorkQueue
呼び出すルーチンがブロックされないように、システム スレッドが作業項目を処理するキューにWORK_QUEUE_ITEMを挿入します。
[in] pWorkQueueItem
WORK_QUEUE_ITEMへのポインター。
[in] Routine
呼び出すルーチンへのポインター。
[in] pContext
ドライバーに渡される完了する作業項目に関連付けられているコンテキスト パラメーターへのポインター。
戻り値
RxDispatchToWorkerThread 、成功した場合はSTATUS_SUCCESS、失敗した場合は次のいずれかのエラー コードが返されます。
| リターン コード | 形容 |
|---|---|
|
アイテムをディスパッチできませんでした。 |
備考
ワーカー スレッドに操作をディスパッチする一般的なケースは 2 つあります。 次の 2 つのディスパッチ操作のトレードオフは、時間と領域 (メモリ使用量) です。
- 操作が繰り返しディスパッチされる場合、ディスパッチされるデータ構造の一部として事前にWORK_QUEUE_ITEM構造体を割り当てることで時間が節約されます。 この場合は、rxPostToWorkerThread ルーチン 使用します。
- 頻度の低い操作の場合は、作業キュー項目のメモリを必要なときに動的に割り当てて解放することで、領域を節約できます。 この場合は、rxDispatchToWorkerThread ルーチン 使用します。
RxPostToWorkerThread ルーチン キューの現在の実装は、呼び出し元と同じプロセッサで動作します。
RxPostToWorkerThread ルーチンがデバッグ ビルドで失敗した場合、エラーの詳細を含む _RxLog ルーチンが呼び出されます。 RxPostToWorkerThread ルーチンが失敗し、カーネルで WMI が有効になっている場合、エラーの詳細は WMI でログに記録されます。
必要条件
| 要件 | 価値 |
|---|---|
| ターゲット プラットフォーム の | デスクトップ |
| ヘッダー | rxworkq.h (Rxworkq.h、Rxstruc.h、Ntifs.h を含む) |
| IRQL | <= APC_LEVEL |
関連項目
RxDispatchToWorkerThread の
RxSpinDownMRxDispatcher の