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 例程将组号和组相对处理器编号转换为系统范围的处理器索引。
例子
以下代码示例使用 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 及更高版本的 Windows 中可用。 |
目标平台 | 普遍 |
标头 | wdm.h (包括 Ntddk.h、Wdm.h、Ntddk.h、Ntifs.h) |
库 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | 任何级别 |