【发布时间】:2012-03-24 15:39:27
【问题描述】:
在尝试开发硬盘分析工具时,我试图从硬盘的 S.M.A.R.T 数据中获取加载/卸载周期计数的值,我想知道是否有人知道如何做到这一点。 我正在尝试:
- 我正在搜索 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); }
}
附:此方法适用于收集 HDD 的温度(这就是 Console.WriteLine("HDD TEMP: " + arrVendorSpecific[tempIndex + 5].ToString()); 行的全部内容,但我不确定为什么它的 tempIndex+5
【问题讨论】:
标签: c# windows-7 wmi disk-smart