您需要使用 WinAPI 函数确定盒子上写的 CPU 时钟速度(即,从注册表中提取的选项不适合)。
任何搜索尝试都会引发关于如何在给定时间找到实际频率的讨论。有人建议我使用“CallNtPowerInformation”或“QueryPerformanceFrequency”,但有很多问题。我将从“QueryPerformanceFrequency”开始:出于我的所有愿望,我仍然不明白它返回什么。我解释一下:我的 CPU 频率约为 1.1 GHz,函数返回值“100,000,000”。这个值是如何测量的?以赫兹为单位?然后是 100 MHz,这是不正确的。
“CallNtPowerInformation”。这里的问题更复杂,坦率地说,我不知道如何解决它。“powerbase.h”头文件中的这个函数被指令“#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)”注释掉了,但是函数调用仍然进行(组装和执行成功)。问题是它失败并出现错误,返回一个负数作为错误代码,这很奇怪。
CallNtPowerInformation只是NtPowerInformation导出 from的包装器ntdll.dll。函数原型如下所示:在您的情况下,它
POWER_INFORMATION_LEVEL等于 11 (ProcessorInformation),由结构描述首先,您应该获得系统中处理器的数量,但是您将如何做到这一点 - 通过
GetSystemInfo或NtQuerySystemInformation- 纯粹是个人问题。那么,你可以这样做:原则上,您可以不关心处理器的数量,而只需传递
NtPowerInformationaddressPROCESSOR_POWER_INFORMATION,但这是一种有点野蛮的方式。<