ハードディスク分析ツールを開発しようとして、ハードディスクの SMART データからロード/アンロード サイクル カウントの値を取得しようとしています。私がしようとしていること:
- 属性番号193が必要なWMI
MSStorageDriver_ATAPISmartData
クラス データを検索しています (ロード/アンロード サイクル カウントを表す属性) - 私が取得しているデータは次のようになります
私は近いと思います。赤のデータは、Everest Home エディションを実行したときに表示されるものと同じです。理想的には、最後の部分 (データと呼ばれる属性) が必要です。
このデータの収集方法:
static void doStuff()
{
try
{
byte TEMPERATURE_ATTRIBUTE = 193;
ManagementObjectSearcher searcher = new ManagementObjectSearcher(@"\root\WMI", "SELECT * FROM MSStorageDriver_ATAPISmartData");
//loop through all the hard disks
foreach (ManagementObject queryObj in searcher.Get())
{
byte[] arrVendorSpecific = (byte[])queryObj.GetPropertyValue("VendorSpecific");
int tempIndex = Array.IndexOf(arrVendorSpecific, TEMPERATURE_ATTRIBUTE);
Console.WriteLine("HDD TEMP: " + arrVendorSpecific[tempIndex + 5].ToString());
foreach (byte dat in arrVendorSpecific)
{
Console.Write(dat.ToString() + " ");
}
}
}
catch (Exception err) { Console.WriteLine(err.Message); }
}
PSこのメソッドは、HDDの温度を収集するために機能します(それがConsole.WriteLine("HDD TEMP: " + arrVendorSpecific[tempIndex + 5].ToString());
行のすべてですが、そのtempIndex + 5の理由はわかりません