首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用C#/.NET实现按磁盘获取ATAPI智能数据

如何使用C#/.NET实现按磁盘获取ATAPI智能数据
EN

Stack Overflow用户
提问于 2017-08-15 03:06:08
回答 1查看 397关注 0票数 0

我想编写一个应用程序来监控系统中一个或多个磁盘的状态。

我发现我可以通过WMI "root/wmi“和MSStorageDriver管理一个磁盘,并查询它们的实际值(数据和阈值),到目前为止,它工作得很好:-)

但是,到目前为止,我还没有管理过多个磁盘。我不知道如何根据磁盘获取智能数据

有人能帮我解决这个问题吗?

非常感谢,奎恩

EN

回答 1

Stack Overflow用户

发布于 2017-08-27 17:39:35

我尝试过并成功了,我想分享这个问题的答案。

相应地,

  • Get PNPDeviceID
  • Get InstanceName of PNPDevice
  • 从InstanceName

获取S.M.A.R.T数据

示例代码

代码语言:javascript
复制
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的任何属性

问候你,奎恩

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45681406

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档