How to query specific adapters in Win32_PerfFormattedData_Tcpip_NetworkInterface?
How can I query specific adapters (ideally based on the IP address) from Win32_PerfFormattedData_Tcpip_NetworkInterface
? I've spent a while googling this issue, but I didn't come up with a solution.
I tried using Win32_NetworkAdapter
and Win32_NetworkAdapterConfiguration
, however, I cannot link these to the performance data.
As I happen to have more than one network adapt开发者_开发技巧er on certain systems, I cannot differentiate which adapter the returned values belong to - any ideas?
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"]);
}
My output was
Name: Realtek PCIe GBE Family Controller - Packet Scheduler Miniport Current Bandwidth: 100000000 Name: MS TCP Loopback interface Current Bandwidth: 10000000 Press any key to continue . . .
Similar to this you can enhance the properties of this Win32_ class
Here is how I did it.
- Query for the instances of Win32_NetworkAdapter that you are interested in.
- Take the value of 'PNPDeviceID' from each Win32_NetworkAdapter and append it to "\HKLM\SYSTEM\CurrentControlSet\Enum\" to produce a registry path to information on the adapter. Here is an example: "\HKLM\SYSTEM\CurrentControlSet\Enum\PCI\VEN_8086&DEV_100E&SUBSYS_001E8086&REV_02\3&267A616A&0&18".
- Query the registry for the "FriendlyName" key at the path you derived above.
- If the "FriendlyName" key is present then take its string value. If the "FriendlyName" key is not defined then instead use the value of the "Description" key from Win32_NetworkAdapter.
- Take the string you got in step #4 and replace all instances of "/" and "#" with an underscore "_".
- The resulting string from step #5 should match the "Name" property within Win32_PerfFormattedData_Tcpip_NetworkInterface.
精彩评论