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)
NtosKrnl.lib
DLL NtosKrnl.exe
IRQL 任何级别

另请参阅

KeGetProcessorIndexFromNumber

KeQueryActiveProcessorCountEx

PROCESSOR_NUMBER