Skip to main content
QueryIdleProcessorCycleTime function

Retrieves the cycle time for the idle thread of each processor in the system.

On a system with more than 64 processors, this function retrieves the cycle time for the idle thread of each processor in the processor group to which the calling thread is assigned. Use the QueryIdleProcessorCycleTimeEx function to retrieve the cycle time for the idle thread on each logical processor for a specific processor group.


BOOL WINAPI QueryIdleProcessorCycleTime(
  _Inout_ PULONG   BufferLength,
  _Out_   PULONG64 ProcessorIdleCycleTime


BufferLength [in, out]

On input, specifies the size of the ProcessorIdleCycleTime buffer, in bytes. This buffer is expected to be 8 times the number of processors in the group.

On output, specifies the number of elements written to the buffer. If the buffer size is not sufficient, the function fails and this parameter receives the required length of the buffer.

ProcessorIdleCycleTime [out]

The number of CPU clock cycles used by each idle thread. This buffer must be 8 times the number of processors in the system in size.

Return value

If the function succeeds, the return value is nonzero.

If the function fails, the return value is zero. To get extended error information, call GetLastError.


To compile an application that uses this function, define _WIN32_WINNT as 0x0600 or later.


Minimum supported client

Windows Vista [desktop apps only]

Minimum supported server

Windows Server 2008 [desktop apps only]


WinBase.h on Windows Vista, Windows 7, Windows Server 2008 and Windows Server 2008 R2 (include Windows.h);
Realtimeapiset.h on Windows 8 and Windows Server 2012





See also

Processor Groups