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プログラミングは性に合いません。
[ツッコミを入れる]