Geoff Chappell, Software Analyst
The HAL calls this function while handling an interrupt whose periodic recurrence has been arranged for profiling.
VOID KeProfileInterruptWithSource (KTRAP_FRAME *TrapFrame);
The TrapFrame argument describes the interrupted execution.
The KeProfileInterrupt function is exported from the 32-bit kernel in versions 3.10 to 6.1 inclusive.
The KeProfileInterrupt function is not documented.
The KeProfileInterrupt function precedes support for generating profile interrupts from multiple sources such as processor-specific counters for performance monitoring. Since that support was defined for version 3.51, the function appears to have been retained only for the convenience of a HAL that can generate profile interrupts only periodically, i.e., from a timer, and can therefore be spared from thinking of the timer as just one of many abstract profile sources.
Beginning with version 3.51, the KeProfileInterrupt function is implemented simply as KeProfileInterruptWithSource for the specific profile source ProfileTime (0).
All known HALs in 32-bit Windows up to and including Windows 7 can generate profile interrupts for the ProfileTime source only. All tell the kernel of these interrupts via KeProfileInterrupt.
All known HALs in all known versions of 64-bit Windows, i.e., from as early as the version 5.2 from Windows Server 2003 SP1, can also arrange for a profile interrupt in response to the overflow of some processor-specific performance monitoring counter. They use KeProfileInterruptWithSource for these necessarily, and for periodically recurring profile interrupts too.