在尝试开发硬盘分析工具时,我试图从硬盘的 SMART 数据中获取加载/卸载周期计数的值,我想知道是否有人知道如何做到这一点。我正在尝试什么:
- 我正在搜索 WMI
MSStorageDriver_ATAPISmartData
类数据,其中属性号193是我需要的(表示加载/卸载循环计数的属性) - 我得到的数据看起来像
我想我已经接近了,红色的数据与我运行 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这种方法适用于收集硬盘的温度(这就是这Console.WriteLine("HDD TEMP: " + arrVendorSpecific[tempIndex + 5].ToString());
条线的全部内容,但我不确定为什么它的 tempIndex+5