以前,我能够使用此调用在 Windows 10 中获取当前的 cpu 核心频率:
const NTSTATUS gotinfo = CallNtPowerInformation
(
ProcessorInformation,
NULL,
0,
pinf,
sizeof(pinf)
);
assert(gotinfo != ERROR_INSUFFICIENT_BUFFER);
assert(gotinfo != ERROR_ACCESS_DENIED);
assert(gotinfo == ERROR_SUCCESS);
但是当我今天尝试这样做时,我总是看到 3700Mhz 在我的核心 i5 12600k 上的最大和当前频率返回 3700Mhz,对于所有核心。这是不正确的。该函数返回 SUCCESS 状态,但产生不正确的结果。
这里发生了什么?为什么 CallNtPowerInformation 停止工作?
注意:Microsoft 忘记包含 PROCESSOR_POWER_INFORMATION 的结构定义,并告诉您自己定义它。他们声称它将在新版本的 WINNT.H 中得到修复,但从来没有。