KeGetProcessorNumberFromIndex 関数 (ntifs.h)

KeGetProcessorNumberFromIndex ルーチンは、システム全体のプロセッサ インデックスをグループ番号とグループ相対プロセッサ番号に変換します。

構文

NTSTATUS KeGetProcessorNumberFromIndex(
  [in]  ULONG             ProcIndex,
  [out] PPROCESSOR_NUMBER ProcNumber
);

パラメーター

[in] ProcIndex

システム全体のプロセッサ インデックス。 マルチプロセッサ システムに合計 n 個の論理プロセッサが含まれている場合、有効なプロセッサ インデックスの範囲は 0 から n から 1 です。

[out] ProcNumber

ProcIndex によって識別されるプロセッサのグループ番号とグループ相対プロセッサ番号をルーチンが書き込む呼び出し元割り当てPROCESSOR_NUMBER構造体へのポインター。

戻り値

呼び出しが成功した場合、KeGetProcessorNumberFromIndex はSTATUS_SUCCESSを返します。 エラーの戻り値として考えられるのは、次のとおりです。

リターン コード 説明
STATUS_INVALID_PARAMETER
ProcIndex パラメーター値が有効なプロセッサ インデックスではありません。

注釈

このルーチンは、マルチプロセッサ システム全体のプロセッサを識別するプロセッサ インデックスを入力として受け取ります。 出力値は、グループ番号とそのグループ内のプロセッサ番号によってプロセッサを識別する PROCESSOR_NUMBER 構造体です。

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

システム内のアクティブな論理プロセッサの合計数を取得するには、 KeQueryActiveProcessorCountEx ルーチンを呼び出します。

KeGetProcessorIndexFromNumber ルーチンは、グループ番号とグループ相対プロセッサ番号をシステム全体のプロセッサ インデックスに変換します。

次のコード例では、 KeQueryActiveProcessorCountEx ルーチンと KeGetProcessorNumberFromIndex ルーチンを使用して、システム内のすべてのアクティブな論理プロセッサを列挙します。

ULONG Count;
ULONG ProcIndex;
PROCESSOR_NUMBER ProcNumber;

Count = KeQueryActiveProcessorCountEx(ALL_PROCESSOR_GROUPS);
for (ProcIndex = 0; ProcIndex < Count; ProcIndex += 1)
{
    KeGetProcessorNumberFromIndex(ProcIndex, &ProcNumber);

    // Do something with the contents of ProcNumber.
    ...
}

ALL_PROCESSOR_GROUPS定数値は、Winnt.h および Ntdef.h で定義されます。

要件

要件
サポートされている最小のクライアント Windows 7
対象プラットフォーム ユニバーサル
Header ntifs.h (Ntddk.h、Wdm.h、Ntddk.h、Ntifs.h を含む)
Library NtosKrnl.lib
[DLL] NtosKrnl.exe
IRQL 任意のレベル

こちらもご覧ください

KeGetProcessorIndexFromNumber

KeQueryActiveProcessorCountEx

PROCESSOR_NUMBER