次の方法で共有


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を返します。 それ以外の場合は、次を返します。

リターン コード 説明
STATUS_INVALID_PARAMETER
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 任意のレベル

こちらもご覧ください

IoRequestDpc

KDPC

KeInitializeDpc

KeInsertQueueDpc

KeSetTargetProcessorDpc

PROCESSOR_NUMBER