次の方法で共有


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 呼び出しは、KeInsertQueueDpc または DPC オブジェクトをキューに格納する IoRequestDpc する前に発生する必要があります。

DPC キューの詳細については、「DPC キューの編成」を参照してください。

必要条件

要件 価値
サポートされる最小クライアント Windows 7 以降で使用できます。
ターゲット プラットフォーム 万国
ヘッダー wdm.h (Wdm.h、Ntddk.h、Ntifs.h を含む)
ライブラリ NtosKrnl.lib
DLL NtosKrnl.exe
IRQL 任意のレベル

関連項目

IoRequestDpc

KDPC する

KeInitializeDpc

KeInsertQueueDpc

KeSetTargetProcessorDpc

PROCESSOR_NUMBER