Export (0) Print
Expand All
Expand Minimize

KeGetCurrentProcessorNumber routine

The KeGetCurrentProcessorNumber routine returns the system-assigned number of the current processor on which the caller is running.

Syntax


ULONG KeGetCurrentProcessorNumber(void);

Parameters

This routine has no parameters.

Return value

KeGetCurrentProcessorNumber returns a ULONG value that represents the processor on which the caller is currently running.

Remarks

KeGetCurrentProcessorNumber can be called to debug spin lock usage on SMP machines during driver development. A driver also might call KeGetCurrentProcessorNumber if it maintained some per-processor data and attempted to reduce cache-line contention.

The number of processors in an SMP machine is a zero-based value.

Windows 7 and later versions of Windows support processor groups. Drivers that are designed to handle information about processor groups should use the KeGetCurrentProcessorNumberEx routine, which specifies a processor group, instead of KeGetCurrentProcessorNumber, which does not. However, the implementation of KeGetCurrentProcessorNumber in Windows 7 and later versions of Windows provides compatibility for drivers that were written for earlier versions of Windows. In this implementation, KeGetCurrentProcessorNumber returns the group-relative processor number if the caller is running on a processor in group 0, which is compatible with the behavior of this routine in earlier versions of Windows that do not support processor groups. If the caller is running on a processor in any group other than group 0, this routine returns a number that is less than the number of processors in group 0. This behavior ensures that the return value is less than the return value of the KeQueryActiveProcessorCount routine.

If the call to KeGetCurrentProcessorNumber occurs at IRQL <= APC_LEVEL, a processor switch can occur between instructions. Consequently, callers of KeGetCurrentProcessorNumber usually run at IRQL >= DISPATCH_LEVEL.

Requirements

Version

Available starting with Windows 2000.

Header

Ntddk.h (include Ntddk.h)

IRQL

See Remarks section.

DDI compliance rules

Irql_Miscellaneous_Function

See also

KeGetCurrentProcessorNumberEx
KeQueryActiveProcessorCount

 

 

Send comments about this topic to Microsoft

Show:
© 2014 Microsoft