The KeQueryHardwareCounterConfiguration routine queries the operating system for the list of hardware counters to use for thread profiling.
NTKERNELAPI NTSTATUS KeQueryHardwareCounterConfiguration( PHARDWARE_COUNTER CounterArray, ULONG MaximumCount, PULONG Count );
A pointer to a caller-allocated buffer into which the routine writes an array of elements of type HARDWARE_COUNTER. Each array element is a structure that contains information about a hardware counter. The array contains one element for each hardware counter that is assigned to thread profiling. If the routine fails, it writes nothing to this buffer.
Specifies the maximum number of elements that the routine can write to the buffer that is pointed to by the CounterArray parameter. The size of the caller-allocated buffer must be at least MaximumCount * sizeof(HARDWARE_COUNTER) bytes.
A pointer to a location into which the routine writes the number of array elements that it has written to the buffer that is pointed to by the CounterArray parameter. If the buffer length that is specified by MaximumCount is not large enough to contain the entire array, the routine writes the required length to *Count and returns STATUS_BUFFER_TOO_SMALL.
KeQueryHardwareCounterConfiguration returns STATUS_SUCCESS if the call is successful. Possible error return values include the following:
||The MaximumCount parameter specifies a buffer length that is not large enough to contain the counter configuration information.|
||This routine is not implemented for the processor architecture that the caller is running on.|
In Windows 7, this routine is implemented only for the x86-based, x64-based, and Itanium-based architectures. If the caller is running on a processor architecture that is not supported, the routine returns STATUS_NOT_IMPLEMENTED.
To set the hardware counter configuration to use for thread profiling, call the KeSetHardwareCounterConfiguration routine.
|Windows version||Available in Windows 7 and later versions of Windows.|
|Header||ntddk.h (include Ntddk.h)|