次の方法で共有


KeGetCurrentProcessorNumberEx 関数 (ntddk.h)

KeGetCurrentProcessorNumberEx ルーチンは、呼び出し元が実行されている論理プロセッサのプロセッサ番号を取得します。

構文

ULONG KeGetCurrentProcessorNumberEx(
  [out, optional] PPROCESSOR_NUMBER ProcNumber
);

パラメーター

[out, optional] ProcNumber

ルーチンが現在の論理プロセッサを識別する PROCESSOR_NUMBER 構造体を書き込む呼び出し元によって割り当てられたバッファーへのポインター。 この構造体には、グループ番号とグループ相対プロセッサ番号が含まれています。 この情報が不要な場合は、このパラメーターを NULL 設定できます。

戻り値

KeGetCurrentProcessorNumberEx は、呼び出し元が実行されている論理プロセッサのシステム全体のプロセッサ インデックスを返します。

備考

ProcNumber が NULLでない場合、ProcNumber 指すバッファーは、PROCESSOR_NUMBER構造体を格納するのに十分な大きさである必要があります。 グループ番号とグループ相対プロセッサ番号を含むこの構造体とは対照的に、戻り値はマルチプロセッサ システム全体のプロセッサを識別するプロセッサ インデックスです。

たとえば、マルチプロセッサ システムに 2 つのグループが含まれており、各グループに 64 個の論理プロセッサが含まれている場合、各グループのプロセッサ番号の範囲は 0 から 63 ですが、システム全体のプロセッサ インデックスの範囲は 0 から 127 です。

KeGetCurrentProcessorNumber 関連ルーチンは現在のプロセッサ番号を返しますが、このルーチンは、KeGetCurrentProcessorNumberExとは異なり、プロセッサのグループ番号を提供しません。 Windows 7 以降のバージョンの Windows オペレーティング システムでは、KeGetCurrentProcessorNumber は、呼び出し元がグループ 0 のプロセッサで実行されている場合にグループ相対プロセッサ番号を返します。これは、グループをサポートしていない以前のバージョンの Windows でこのルーチンの動作と互換性があります。 ただし、呼び出し元がグループ 0 以外のグループのプロセッサで実行されている場合、このルーチンは、グループ 0 のプロセッサの数より少ない数を返します。 この動作により、KeQueryActiveProcessorCount ルーチンの戻り値よりも戻り値が小さくなります。 KeGetCurrentProcessorNumber 呼び出し、グループ指向機能を使用しない既存のドライバーは、2 つ以上のグループを持つマルチプロセッサ システムで正しく実行されます。 ただし、Windows 7 以降のバージョンの Windows オペレーティング システムでグループ指向機能を使用するドライバーは、KeGetCurrentProcessorNumber ではなく、KeGetCurrentProcessorNumberEx呼び出す必要があります。

必要条件

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

関連項目

KeGetCurrentProcessorNumber

KeQueryActiveProcessorCount

PROCESSOR_NUMBER