KeGetCurrentProcessorNumberEx 函数 (ntddk.h)
KeGetCurrentProcessorNumberEx 例程获取调用方运行的逻辑处理器的处理器编号。
语法
ULONG KeGetCurrentProcessorNumberEx(
[out, optional] PPROCESSOR_NUMBER ProcNumber
);
参数
[out, optional] ProcNumber
指向调用方分配的缓冲区的指针,例程在其中写入标识当前逻辑处理器 的 PROCESSOR_NUMBER 结构。 此结构包含组号和组相对处理器编号。 如果不需要此信息,可以将此参数设置为 NULL 。
返回值
KeGetCurrentProcessorNumberEx 返回调用方正在运行的逻辑处理器的系统范围的处理器索引。
注解
如果 ProcNumber 为非 NULL,则 ProcNumber 指向的缓冲区必须足够大,才能包含PROCESSOR_NUMBER结构。 与此结构(包含组号和组相对处理器编号)相比,返回值是一个处理器索引,用于标识整个多处理器系统中的处理器。
例如,如果多处理器系统包含两个组,并且每个组包含 64 个逻辑处理器,则每个组中的处理器编号范围为 0 到 63,但系统范围的处理器索引范围为 0 到 127。
相关的例程 KeGetCurrentProcessorNumber 返回当前处理器编号,但此例程与 KeGetCurrentProcessorNumberEx 不同,不提供处理器的组号。 在 Windows 7 及更高版本的 Windows 操作系统中,如果调用方在组 0 中的处理器上运行, KeGetCurrentProcessorNumber 将返回相对于组的处理器编号,这与不支持组的早期版本的 Windows 中此例程的行为兼容。 但是,如果调用方在组 0 以外的任何组中的处理器上运行,则此例程将返回一个小于组 0 中处理器数的数字。 此行为可确保返回值小于 KeQueryActiveProcessorCount 例程的返回值。 调用 KeGetCurrentProcessorNumber 且不使用面向组的功能的现有驱动程序在具有两个或更多组的多处理器系统中正确运行。 但是,在 Windows 7 及更高版本的 Windows 操作系统中使用任何面向组的功能的驱动程序应调用 KeGetCurrentProcessorNumberEx ,而不是 KeGetCurrentProcessorNumber。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 在 Windows 7 和更高版本的 Windows 中可用。 |
目标平台 | 通用 |
标头 | ntddk.h (包括 Ntddk.h、Wdm.h、Ntddk.h) |
Library | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | 任何级别 |