C#使用WMI查询LogicalDisk信息

时间:2012-12-16 20:06:04

标签: c# wmi performancecounter

我希望使用WMI获取本地计算机上磁盘的性能信息。根据Win32_PerfFormattedData_PerfDisk_LogicalDisk(http://msdn.microsoft.com/en-us/library/aa394261(v=vs.85).aspx)的文档,看起来我应该能够查询信息并获取值。

然而,当我运行代码时,我为属性的每个值得到“0”。

var selectQuery = new SelectQuery("Select * from Win32_PerfFormattedData_PerfDisk_LogicalDisk");
var searcher = new ManagementObjectSearcher(selectQuery);

foreach (ManagementObject disk in searcher.Get())
{
    foreach (PropertyData property in disk.Properties)
    {
        var propertyValue = property.Value; // 0 value.
    }
}

我也查询了Win32_PerfRawData_PerfDisk_LogicalDisk,我确实得到了实际的原始值。当然,我宁愿使用格式化数据而不是原始数据。在使用WMI时,似乎缺乏将原始数据转换为格式化数据的文档。

我知道为什么每个值都得0?

1 个答案:

答案 0 :(得分:1)

这是一个刚刚测试过这个

的工作示例

您可以使用WMI Performance Class Counters。一个例子是轮询PerfDisk_LogicalDisk

ManagementObjectSearcher mos = new ManagementObjectSearcher("select * from Win32_PerfFormattedData_PerfDisk_LogicalDisk");
foreach (ManagementObject service in mos.Get())
{
    foreach (PropertyData propData in service.Properties)
    {
        Console.WriteLine("{0} {1}", propData.Name, propData.Value);
    }
}