KeSetTargetProcessorDpcEx 関数 (wdm.h)
KeSetTargetProcessorDpcEx ルーチンは、DPC ルーチンを実行するプロセッサを指定します。
構文
NTSTATUS KeSetTargetProcessorDpcEx(
[in, out] PKDPC Dpc,
[in] PPROCESSOR_NUMBER ProcNumber
);
パラメーター
[in, out] Dpc
呼び出し元の DPC オブジェクトへのポインター。 このパラメーターは、DPC オブジェクトを表す不透明なシステム構造である KDPC 構造体を指します。 このオブジェクトは、以前に KeInitializeDpc ルーチンによって初期化されている必要があります。
[in] ProcNumber
DPC がキューに入れ、実行されるターゲット プロセッサを識別する呼び出し元によって割り当てられた PROCESSOR_NUMBER 構造体へのポインター。 この構造体は、グループと、このグループ内のプロセッサを指定します。
戻り値
呼び出しが成功した場合、KeSetTargetProcessorDpcEx はSTATUS_SUCCESSを返します。 それ以外の場合は、次を返します。
リターン コード | 説明 |
---|---|
|
ProcNumber パラメーターは、無効なプロセッサ番号を指します。 |
注釈
マルチプロセッサ システム内の各プロセッサには、独自の DPC キューがあります。 KeSetTargetProcessorDpcEx は、ドライバーが KeInsertQueueDpc ルーチンまたは IoRequestDpc ルーチンを呼び出して後で実行する DPC をキューに入れるときに、システムが使用するプロセッサのキューを指定します。
KeSetTargetProcessorDpcEx では、通常の DPC と スレッド DPC の両方にターゲット プロセッサを指定できます。 通常の DPC は優先度の高いスレッドでも割り込めませんが、十分に優先度の高いタイム クリティカルなスレッドによってスレッド DPC を割り込むことができます。
関連ルーチン KeSetTargetProcessorDpc は DPC のターゲット プロセッサを指定しますが、このルーチンは KeSetTargetProcessorDpcEx とは異なり、ターゲット プロセッサのグループを指定しません。 Windows 7 以降、 KeSetTargetProcessorDpc はターゲット プロセッサがグループ 0 に属していることを前提としています。 この動作により、 KeSetTargetProcessorDpc を呼び出し、グループ指向機能を使用しない既存のドライバーが、2 つ以上のグループを持つマルチプロセッサ システムで正しく実行されるようになります。 ただし、Windows 7 以降のバージョンの Windows オペレーティング システムでグループ指向機能を使用するドライバーでは、KeSetTargetProcessorDpc ではなく KeSetTargetProcessorDpcEx を呼び出す必要があります。
DPC オブジェクトがキューに入った後に発生する KeSetTargetProcessorDpcEx の呼び出しは、DPC ルーチンを実行するためのプロセッサの選択には影響しません。 ターゲット プロセッサの選択を制御するには、 KeSetTargetProcessorDpcEx 呼び出しが、DPC オブジェクトをキューに格納する KeInsertQueueDpc または IoRequestDpc の呼び出しの前に行われる必要があります。
DPC キューの詳細については、「 DPC キューの編成」を参照してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 7 以降で使用できます。 |
対象プラットフォーム | ユニバーサル |
Header | wdm.h (Wdm.h、Ntddk.h、Ntifs.h を含む) |
Library | NtosKrnl.lib |
[DLL] | NtosKrnl.exe |
IRQL | 任意のレベル |