2011-12-18 94 views
1

因此,我使用WPF,C#和WMI作爲一個小型項目來收集計算機的規格,並將其放在SourceForge上,因爲它對我來說沒什麼用處。
我很快就發現SoftPedia已經把它拿起來了,並在屏幕截圖中注意到電壓讀數存在錯誤。這是從他們的網頁缺口的圖像:wmi提供錯誤的電壓讀數

http://i.stack.imgur.com/8QpBq.png

目前,我用「電流 - 電壓」源電壓,例如

foreach (var item in new ManagementObjectSearcher("Select * from Win32_Processor").Get()) 
{ 
    labelName.Content = (decimal.Parse(item["CurrentVoltage"].ToString())/10).ToString() + " v"; 
} 

正如你可以在圖片中看到,它的讀如圖片0V。我想知道是否需要將「CurrentVoltage」切換爲「VoltageCaps」,或者如果我需要直接閱讀SMBIOS這樣的操作。

如果是後者,請指定如何操作,謝謝。

+0

請用四個空格縮進你的代碼。 – SLaks 2011-12-18 17:25:32

回答

2

基於用於Win32_Processor類的文檔上:

處理器的電壓。如果第8位被設置,則位0-6包含乘以10的電壓。如果未設置第8位,則VoltageCaps中的位設置表示電壓值。 CurrentVoltage僅在SMBIOS指定電壓值時設置。

這意味着,如果當與0x80掩蓋它讀取0,則應該爲3箇中所列的值之一使用的值從VoltageCaps到「州」的電壓爲VoltageCaps,除非查詢的結果是NULL在這種情況下,電壓是未知的。

+0

有沒有其他方法使用C#來獲取電壓? – LMS 2011-12-18 17:50:41

+0

沒有什麼明顯的想法;抱歉!我習慣於從C++訪問IPMI/Raw傳感器數據,這些數據往往是WMI信息中出現的所有讀數的起源 – Petesh 2011-12-19 10:37:55

+0

這聽起來很愚蠢,但是可以在C#中使用C++,可能使用C++中的DLL並在C#中引用它?如果以前是可能的,而且我做了,那麼會出現像提供的圖片中的錯誤? – LMS 2011-12-22 14:34:46