从 CallNtPowerInformation() 获取处理器信息

问题描述 投票:0回答:0

以前,我能够使用此调用在 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 中得到修复,但从来没有。

winapi system cpu frequency
© www.soinside.com 2019 - 2024. All rights reserved.