这属于 ServerFault 而不是 StackOverflow 的基本原理- 我已经有了获取值的程序,我正在查询返回的值及其含义。
我有一个内部程序来审核我们公司的 PC,它检查的一件事是处理器的速度。为此,它查询Win32_Processor WMI 类并获取CurrentClockSpeed的值。
今天我们在玩数据,发现一些速度被错误报告的异常(例如,CurrentClockSpeed 说 1.0GHz,而 CPU 名称说Intel(R) Core(TM)2 CPU T5600 @ 1.83GHz [已确认实际上是 1.83GHz])。我在互联网上进行了一些挖掘,发现了这篇博文,可以解释发生了什么。
我最初的想法是我可以更改程序以获取MaxClockSpeed而不是CurrentClockSpeed的值,但微软的文档没有明确定义这将返回什么。我的意思是这将返回一个值,该值是它的实际最大速度(例如,如果它被超频了),但它通常不会运行,或者它会返回我期望的值,这是它在正常情况下的最大速度(没有超频)条件?
如今,处理器对它们的需求相当智能,尤其是在笔记本电脑中。仅仅因为处理器是 1.83Ghz,如果不需要额外的功率,它可能会决定通过以较低的时钟速度运行来节省功率(和热量)。
您可以通过转到 Windows 任务管理器来查看这种差异。在 Vista 和 Windows 7 中更清晰,但事实在 XP 中仍然存在。您将看到您的处理器速度列出了两次。当我的机器全功率运行时,它会说:
Intel(R) Core(TM)2 Duo CPU T7500 @ 2.20GHz 2.20GHz
但是,当我的电池电量不足时,它会显示:
Intel(R) Core(TM)2 Duo CPU T7500 @ 2.20GHz 1.80GHz
所以基本上,你链接到的那篇文章是正确的。我希望它
MaxClockSpeed
总是返回相同的值(在我的例子中,2.20GHz,因为这是 BIOS 报告的)。关于超频,超频后的 CPU 的 BIOS 将返回其理论最高速度,因此如果您将 2.0GHz 超频到 2.4GHz,那么它会报告 2.4GHz。