KeGetProcessorNumberFromIndex 函数 (wdm.h)

KeGetProcessorNumberFromIndex 例程将系统范围的处理器索引转换为组号和组相对处理器编号。

语法

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

参数

[in] ProcIndex

系统范围的处理器索引。 如果多处理器系统总共包含 n 个逻辑处理器,则有效的处理器索引范围为 0 到 n-1

[out] ProcNumber

指向调用方分配 的PROCESSOR_NUMBER 结构的指针,其中例程将 ProcIndex 标识的处理器的组号和组相对处理器编号写入其中。

返回值

如果调用成功,KeGetProcessorNumberFromIndex 将返回STATUS_SUCCESS。 可能的错误返回值包括以下内容:

返回代码 说明
STATUS_INVALID_PARAMETER ProcIndex 参数值不是有效的处理器索引。

注解

此例程接受处理器索引作为输入,用于标识整个多处理器系统的处理器。 输出值是一个 PROCESSOR_NUMBER 结构,它通过处理器的组号和组中的处理器编号来标识处理器。

例如,如果多处理器系统包含两个组,并且每个组包含 64 个逻辑处理器,则每个组中的处理器编号范围为 0 到 63,但系统范围的处理器索引范围为 0 到 127。

若要获取系统中活动逻辑处理器的总数,请调用 KeQueryActiveProcessorCountEx 例程。

KeGetProcessorIndexFromNumber 例程将组号和组相对处理器编号转换为系统范围的处理器索引。

示例

下面的代码示例使用 KeQueryActiveProcessorCountExKeGetProcessorNumberFromIndex 例程枚举系统中的所有活动逻辑处理器:

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 和更高版本的 Windows 中可用。
目标平台 通用
标头 wdm.h (包括 Ntddk.h、Wdm.h、Ntddk.h、Ntifs.h)
Library NtosKrnl.lib
DLL NtosKrnl.exe
IRQL 任何级别

另请参阅

KeGetProcessorIndexFromNumber

KeQueryActiveProcessorCountEx

PROCESSOR_NUMBER