KeQueryHardwareCounterConfiguration 函数 (ntddk.h)
KeQueryHardwareCounterConfiguration 例程在操作系统中查询用于线程分析的硬件计数器列表。
语法
NTSTATUS KeQueryHardwareCounterConfiguration(
[out] PHARDWARE_COUNTER CounterArray,
[in] ULONG MaximumCount,
[out] PULONG Count
);
参数
[out] CounterArray
指向调用方分配的缓冲区的指针,例程在其中写入 HARDWARE_COUNTER类型的元素数组。 每个数组元素都是一个结构,其中包含有关硬件计数器的信息。 数组包含分配给线程分析的每个硬件计数器的一个元素。 如果例程失败,它将不向此缓冲区写入任何内容。
[in] MaximumCount
指定例程可以写入 到 CounterArray 参数指向的缓冲区的最大元素数。 调用方分配的缓冲区的大小必须至少为 maximumCount * 大小 ( (HARDWARE_COUNTER) 字节)。
[out] Count
指向一个位置的指针,例程在其中写入到 CounterArray 参数所指向的缓冲区的数组元素数。 如果 MaximumCount 指定的缓冲区长度不足以包含整个数组,则例程会将所需长度写入 *Count 并返回STATUS_BUFFER_TOO_SMALL。
返回值
如果调用成功,KeQueryHardwareCounterConfiguration 将返回STATUS_SUCCESS。 可能的错误返回值包括以下内容:
返回代码 | 说明 |
---|---|
STATUS_BUFFER_TOO_SMALL | MaximumCount 参数指定的缓冲区长度不够大,无法包含计数器配置信息。 |
STATUS_NOT_IMPLEMENTED | 对于调用方运行的处理器体系结构,不会实现此例程。 |
注解
在 Windows 7 中,此例程仅针对基于 x86、基于 x64 和基于 Itanium 的体系结构实现。 如果调用方在不支持的处理器体系结构上运行,则例程返回STATUS_NOT_IMPLEMENTED。
若要设置用于线程分析的硬件计数器配置,请调用 KeSetHardwareCounterConfiguration 例程。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 在 Windows 7 和更高版本的 Windows 中可用。 |
目标平台 | 通用 |
标头 | ntddk.h (包括 Ntddk.h) |
Library | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= APC_LEVEL |