【问题标题】:How to get ATAPI SMART Data according to disks using C#/.NET如何使用 C#/.NET 根据磁盘获取 ATAPI SMART 数据
【发布时间】:2018-01-22 16:46:18
【问题描述】:
【问题讨论】:
标签:
c#
windows
hard-drive
【解决方案1】:
我尝试并成功了,我想分享这个问题的答案
- 获取 PNPDeviceID
- 相应地获取 PNPDevice 的 InstanceName
- 从 InstanceName 获取 S.M.A.R.T 数据
示例代码
public string PNPDeviceID
{
set
{
this.m_PNPDeviceID = value;
this.InstanceName = null;
this.QueryObjATAPISmartData = null;
SearcherPnPDeviceId = new ManagementObjectSearcher("root\\WMI", "SELECT * FROM MSWmi_PnPDeviceId");
foreach (ManagementObject queryObj in SearcherPnPDeviceId.Get())
{
if (queryObj["PNPDeviceID"] != null)
{
if (this.PNPDeviceID.ToUpper() == queryObj.GetPropertyValue("PNPDeviceID").ToString().ToUpper())
{
if (queryObj["InstanceName"] != null)
{
this.InstanceName = queryObj["InstanceName"].ToString();
break;
}
}
}
}
if (this.InstanceName != null)
{
SearcherATAPISmartData = new ManagementObjectSearcher("root\\WMI", "SELECT * FROM MSStorageDriver_ATAPISmartData");
foreach (ManagementObject queryObj in SearcherATAPISmartData.Get())
{
if (queryObj["InstanceName"] != null)
{
if (this.InstanceName.ToUpper() != queryObj.GetPropertyValue("InstanceName").ToString().ToUpper())
{
continue;
}
}
this.QueryObjATAPISmartData = queryObj;
break;
}
}
}
之后,您可以获取 QueryObjATAPISmartData 的任何属性
问候,
铨