获取CPU温度,读DTS有的机器正常,有的机器为0
获取CPU的温度,我参考了网上的一些方法,大概有两种,第一种是用rdmsr来读取DTS,参考http://www.programbbs.com/doc/4887.htm 。 第二种是读取PMU来获取,参考http://topic.csdn.net/t/20040627/13/3126026.html# 这个方法我没有用成功,因为里面的一些汇编语句需要ring0权限才行,当我加上一些网上可以在ring3级别不用驱动执行ring0方法的代码后,没有取到温度值,并且程序很不稳定,还会死机。所以采用了第一种方法,但是实现后,在一些机器上可以正常获取。 但是在一些机器上获取DTS为0,都是inter的CPU,不知道为什么。
叙述的有点多,主要是想大家知道我现在遇到的问题,是不是同是inter CPU,取DTS的指令也不一定是ecx=0x19c?另外帖子里说的“注意signature 为 0x6f1, 0x6f0的 CPU DTS 值......”,不知道signature是怎么取到的。 希望高手能回答一下,或者有取CPU温度的源码最好了,谢谢
[解决办法]
可能老型号的cpu不支持 DTS
[解决办法]
每次都读到-1,怀疑是权限问题。刚搜索了很多帖子,很多人也遇到了这个问题。貌似是权限问题