KeQueryHardwareCounterConfiguration 函数 (ntddk.h)
KeQueryHardwareCounterConfiguration 例程查询作系统,以获取用于线程分析的硬件计数器列表。
语法
NTSTATUS KeQueryHardwareCounterConfiguration(
[out] PHARDWARE_COUNTER CounterArray,
[in] ULONG MaximumCount,
[out] PULONG Count
);
参数
[out] CounterArray
指向调用方分配的缓冲区的指针,该缓冲区的例程将类型为 HARDWARE_COUNTER的元素数组写入其中。 每个数组元素都是包含有关硬件计数器的信息的结构。 该数组包含分配给线程分析的每个硬件计数器的一个元素。 如果例程失败,它将不向此缓冲区写入任何内容。
[in] MaximumCount
指定例程可以写入 CounterArray 参数指向的缓冲区的最大元素数。 调用方分配的缓冲区的大小必须至少 MaximumCount * sizeof(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) |
库 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= APC_LEVEL |