2010-01-29(金) 曇 安静時心拍数 61 [長年日記]
_ CPUコアの温度を取得する
某案件でCPUの温度を表示したいとのことで調べてみたところ発見しました。ちょっと動かしてみたところ、明らかに温度がおかしいのに気付きました。Intelの仕様書を読んでみたところ、16bit目から22bit目のところを拾うんだから0x003F0000じゃなくて0x007F0000ですね。以下のようになるかな。
$ diff -u CPUCoreTemp.cs{.orig,} --- CPUCoreTemp.cs.orig Fri Jan 29 14:37:09 2010 +++ CPUCoreTemp.cs Fri Jan 29 15:21:37 2010 @@ -143,7 +143,7 @@ //----------------------------------------------------------------------------- // 取得した値からCPU温度を算出 //----------------------------------------------------------------------------- - uint tempr = (eax & 0x003F0000); + uint tempr = (eax & 0x007F0000); tempr = tempr >> 16; str += "Digital Readout(bits 22:16) : " + tempr.ToString("X2") + "(" + tempr.ToString() + ")\r\n";
それにしても、Windowsプログラミングは性に合いません。