如何在Win32_PerfFormattedData_Tcpip_NetworkInterface中查询特定的适配器?

时间:2010-09-28 14:42:45

标签: performance networking wmi

如何从Win32_PerfFormattedData_Tcpip_NetworkInterface查询特定适配器(理想情况下基于IP地址)?我花了一段时间在谷歌搜索这个问题,但我没有提出解决方案。

我尝试使用Win32_NetworkAdapter和Win32_NetworkAdapterConfiguration,但是,我无法将这些链接到性能数据。

由于我碰巧在某些系统上有多个网络适配器,我无法区分返回值所属的适配器 - 任何想法?

2 个答案:

答案 0 :(得分:0)

            ConnectionOptions connection = new ConnectionOptions();
            ManagementScope scope = new ManagementScope("\\root\\CIMV2", connection);
            scope.Connect();

            ObjectQuery query = new ObjectQuery(
                "SELECT * FROM Win32_PerfFormattedData_Tcpip_NetworkInterface");

            ManagementObjectSearcher searcher =
                new ManagementObjectSearcher(scope, query);

            foreach (ManagementObject queryObj in searcher.Get())
            {
                Console.WriteLine("Name: {0}", queryObj["Name"]);
                Console.WriteLine("Current Bandwidth: {0}", queryObj["CurrentBandwidth"]);
            }

我的输出是

名称:Realtek PCIe GBE系列控制器 - 数据包调度程序微型端口 当前带宽:100000000 名称:MS TCP Loopback接口 当前带宽:10000000 按任意键继续 。 。

与此类似,您可以增强此Win32_类的属性

答案 1 :(得分:0)

我是这样做的。

  1. 查询您感兴趣的Win32_NetworkAdapter实例。
  2. 从每个Win32_NetworkAdapter获取'PNPDeviceID'的值,并将其附加到“\ HKLM \ SYSTEM \ CurrentControlSet \ Enum \”以生成有关适配器信息的注册表路径。下面是一个示例:“\ HKLM \ SYSTEM \ CurrentControlSet \ Enum \ PCI \ VEN_8086& DEV_100E& SUBSYS_001E8086& REV_02 \ 3& 267A616A& 0& 18”。
  3. 在上面派生的路径中查询注册表中的“FriendlyName”键。
  4. 如果存在“FriendlyName”键,则取其字符串值。如果未定义“FriendlyName”键,则使用Win32_NetworkAdapter中“Description”键的值。
  5. 使用您在步骤#4中获得的字符串,并使用下划线“_”替换“/”和“#”的所有实例。
  6. 步骤#5中的结果字符串应与Win32_PerfFormattedData_Tcpip_NetworkInterface中的“Name”属性匹配。