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