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 及更高版本中使用任何面向组的功能的驱动程序应调用 KeGetCurrentProcessorNumberEx,而不是 KeGetCurrentProcessorNumber。
要求
要求 | 价值 |
---|---|
最低支持的客户端 | 在 Windows 7 及更高版本的 Windows 中可用。 |
目标平台 | 普遍 |
标头 | ntddk.h(包括 Ntddk.h、Wdm.h、Ntddk.h) |
库 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | 任何级别 |