C++代码:CPU负载和CPU温度

13

我想在Windows中查看CPU温度和CPU负载。我必须自己编写代码,而不能使用像Core Temp这样的软件。我该如何获取这些信息?

我看到过一个类似于我的问题,但是没有有用的答案:(。

3个回答

5

最近我开始了一个类似的项目。我需要在Linux和Windows中读取CPU温度并控制风扇。我对C++、VS和DDK不是很了解,但我想出了如何编写简单的内核驱动程序和使用winring0编写简单程序。在我的笔记本电脑(以及大多数其他电脑)中,温度和风扇由嵌入式控制器控制。你有两个选择,要么编写内核驱动程序,要么使用库来访问嵌入式控制器。这是因为Windows保护EC以防止普通用户权限访问。一个好的(且可用的)库是winring0(WinRing0_1_3_1b)。在Windows中检查EC和其他所有内容的有用程序是RW工具。


谢谢Jitamaro。我实际上正在寻找一个简单的代码来查看应该使用哪个win32 API。 - Sara
1
它的inp()和outp()函数来自某些Windows头文件,用于读写ec。您需要找到正确的寄存器,但也可能有其他方法。 - Micromega
这样的程序输出是什么?它类似于摄氏度还是华氏度的整数吗?是否可能编写一个命令行程序,输出CPU的微温度?这对我的PHP脚本中随机数生成器中的种子会很有用。 - droplet
温度以字节为单位,这取决于您使用的操作系统。在Linux中,有acer_ec.pl脚本。在Windows中,您必须编写驱动程序或使用API,因为EC未公开。 - Micromega

1

Win32_TemperatureProbe 的链接内容说:“无法提取 CurrentReading 属性”。它向您介绍了温度探针,但没有提供其值。 - c z

0
在我阅读的所有论坛和帖子中,我都没有看到使用WMI的成功实现。有人声称它可以工作,然后另外一些人说我遇到了错误xyz,这意味着它并不适用于所有处理器和主板。我也没有成功。
使用OpenHardware Monitor可以实现,但在我的实现中,它仅提供了CPU温度而没有线程温度,并且与我首选的实现Core Temp相比非常慢。缺点是Core Temp是一个必须在提取温度数据之前运行的应用程序,我不知道是否有直接的DLL替代方法。但是它很快,并且在所有平台上提供了所有的线程温度。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接