KeGetCurrentProcessorNumber 函数 (ntddk.h)
KeGetCurrentProcessorNumber 例程返回运行调用方所在的当前处理器的系统分配编号。
语法
ULONG KeGetCurrentProcessorNumber();
返回值
KeGetCurrentProcessorNumber 返回一个 ULONG 值,该值表示调用方当前正在运行的处理器。
言论
可以调用 KeGetCurrentProcessorNumber,在驱动程序开发期间调试 SMP 计算机上的旋转锁使用情况。 驱动程序还可以调用 KeGetCurrentProcessorNumber(如果它维护了一些每个处理器的数据并尝试减少缓存行争用)。
SMP 计算机中的处理器数是一个从零开始的值。
Windows 7 及更高版本的 Windows 支持处理器组。 旨在处理有关处理器组信息的驱动程序应使用 KeGetCurrentProcessorNumberEx 例程,该例程指定处理器组,而不是 KeGetCurrentProcessorNumber,而该例程不指定处理器组。 但是,在 Windows 7 和更高版本中实现 KeGetCurrentProcessorNumber 为早期版本的 Windows 编写的驱动程序提供了兼容性。 在此实现中,如果调用方在组 0 中的处理器上运行,则 KeGetCurrentProcessorNumber 返回相对于组的处理器编号,这与早期版本的 Windows 中不支持处理器组的此例程的行为兼容。 如果调用方在组 0 以外的任何组中的处理器上运行,此例程将返回小于组 0 中的处理器数的数字。 此行为可确保返回值小于 KeQueryActiveProcessorCount 例程的返回值。
如果对 KeGetCurrentProcessorNumber 的调用发生在 IRQL <= APC_LEVEL,则可以在指令之间发生处理器开关。 因此,KeGetCurrentProcessorNumber 的调用方通常以 IRQL >= DISPATCH_LEVEL 运行。
要求
要求 | 价值 |
---|---|
最低支持的客户端 | 从 Windows 2000 开始可用。 |
目标平台 | 桌面 |
标头 | ntddk.h (包括 Ntddk.h) |
IRQL | 请参阅“备注”部分。 |
DDI 符合性规则 | Irql_Miscellaneous_Function(ndis) |