У меня возникли проблемы с получением правильной температуры определенного жесткого диска в моем приложении с помощью запроса WMI, каким-то образом один из двух моих жестких дисков возвращает 0 в качестве температуры, а другой возвращает обычную температуру, например 34 градуса по Цельсию.
Это мой метод:
public static void GetTemps()
{
const byte TEMPERATURE_ATTRIBUTE = 194;
try
{
int counter = 1;
ManagementObjectSearcher searcher = new ManagementObjectSearcher("root\\WMI", "SELECT * FROM MSStorageDriver_ATAPISmartData");
foreach (ManagementObject queryObj in searcher.Get())
{
byte[] arrVendorSpecific = (byte[])queryObj["VendorSpecific"];
System.Windows.Forms.MessageBox.Show("DRIVE: " + (counter + ("=" + arrVendorSpecific[TEMPERATURE_ATTRIBUTE + 5])));
counter++;
}
}
catch (ManagementException err)
{
System.Windows.Forms.MessageBox.Show(("An error has occurred: " + err.Message));
}
Возможно, самая странная часть заключается в том, что этот код работал не так давно, хотя время от времени он по-прежнему показывал 0.
+ 5
вarrVendorSpecific
? - person Jacob Krall   schedule 14.10.2016arrVendorSpecific
, и пока вы это делаете, проверяйте, какие значения изменяются в вашем массиве байтов. . Я пробовал, но мой SSD, кажется, постоянно сообщает только о 50C на этом ноутбуке. - person KSib   schedule 14.10.2016