When you run powercfg /energy from an elevated command line you can get this:
Platform Timer Resolution:Platform Timer Resolution
The default platform timer resolution is 15.6ms (15625000ns) and should be used whenever the system is idle. If the timer resolution is increased, processor power management technologies may not be effective. The timer resolution may be increased due to multimedia playback or graphical animations.
Current Timer Resolution (100ns units)
Maximum Timer Period (100ns units)
Platform Timer Resolution:Outstanding Timer Request
A program or service has requested a timer resolution smaller than the platform maximum timer resolution.
Requesting Process ID
Requesting Process Path
From a power consumption persective, having an elevated more frequent timer might not be the most optimal.
Then in the informational section you get this:
Platform Timer Resolution:Timer Request Stack
The stack of modules responsible for the lowest platform timer setting in this process.
But that still doesn’t give me the source, nor what API to look for. One of the API calls that can be responsible for this is the timeBeginPeriod function. Then it becomes as easy as setting a breakpoint on winmm!timeBeginPeriod in WinDbg and voila. There might be more API calls that change the timer. [Edit] The more interesting API is obviously ntdll32!NtSetTimerResolution