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