KeGetCurrentProcessorNumber 関数 (ntddk.h)

KeGetCurrentProcessorNumber ルーチンは、呼び出し元が実行されている現在のプロセッサのシステム割り当て番号を返します。

構文

ULONG KeGetCurrentProcessorNumber();

戻り値

KeGetCurrentProcessorNumber は、呼び出し元が現在実行されているプロセッサを表す ULONG 値を返します。

注釈

KeGetCurrentProcessorNumber を呼び出して、ドライバーの開発中に SMP マシンでのスピン ロックの使用状況をデバッグできます。 また、ドライバーがプロセッサごとのデータを保持し、キャッシュラインの競合を減らそうとした場合は、 KeGetCurrentProcessorNumber を呼び出すこともできます。

SMP マシン内のプロセッサの数は、0 から始まる値です。

Windows 7 以降のバージョンの Windows では、プロセッサ グループがサポートされています。 プロセッサ グループに関する情報を処理するように設計されたドライバーでは、 KeGetCurrentProcessorNumber ではなく、プロセッサ グループを指定する KeGetCurrentProcessorNumberEx ルーチンを使用する必要があります。 ただし、Windows 7 以降のバージョンの Windows での KeGetCurrentProcessorNumber の実装では、以前のバージョンの Windows 用に記述されたドライバーの互換性が提供されます。 この実装では、呼び出し元がグループ 0 のプロセッサで実行されている場合、 KeGetCurrentProcessorNumber はグループ相対プロセッサ番号を返します。これは、プロセッサ グループをサポートしていない以前のバージョンの Windows でのこのルーチンの動作と互換性があります。 呼び出し元がグループ 0 以外のグループのプロセッサで実行されている場合、このルーチンは、グループ 0 のプロセッサの数より少ない数を返します。 この動作により、戻り値が KeQueryActiveProcessorCount ルーチンの戻り値よりも小さくなります。

KeGetCurrentProcessorNumber の呼び出しが IRQL <= APC_LEVELで発生した場合、命令間でプロセッサ スイッチが発生する可能性があります。 そのため、 KeGetCurrentProcessorNumber の呼び出し元は通常、IRQL >= DISPATCH_LEVELで実行されます。

要件

要件
サポートされている最小のクライアント Windows 2000 以降で使用できます。
対象プラットフォーム デスクトップ
Header ntddk.h (Ntddk.h を含む)
IRQL 「解説」を参照してください。
DDI コンプライアンス規則 Irql_Miscellaneous_Function(ndis)

こちらもご覧ください

KeGetCurrentProcessorNumberEx

KeQueryActiveProcessorCount