Пример #1
0
    public static ServerNicInfo[] GetVMBusNetworkAdapterList(ManagementScope scope)
    {
        Dictionary <string, ServerNicInfo> dictionary       = new Dictionary <string, ServerNicInfo>((IEqualityComparer <string>)StringComparer.CurrentCultureIgnoreCase);
        Dictionary <string, string>        idsToPnpDeviceId = WMIUtils.GetVMBUSDeviceIdsToPNPDeviceId(scope);
        ObjectQuery query = new ObjectQuery("Select * from Win32_NetworkAdapterConfiguration where IPEnabled = TRUE");

        using (ManagementObjectSearcher managementObjectSearcher = new ManagementObjectSearcher(scope, query))
        {
            using (ManagementObjectCollection objectCollection = managementObjectSearcher.Get())
            {
                foreach (ManagementObject managementObject in objectCollection)
                {
                    string empty = string.Empty;
                    object obj   = managementObject["Index"];
                    idsToPnpDeviceId.TryGetValue(obj.ToString(), out empty);
                    if (!string.IsNullOrEmpty(empty))
                    {
                        ServerNicInfo serverNicInfo = new ServerNicInfo();
                        serverNicInfo.Index            = (int)(uint)obj;
                        serverNicInfo.PNPInstanceId    = empty;
                        serverNicInfo.TcpIpServiceUuid = (string)managementObject["SettingID"];
                        if (!dictionary.ContainsKey(serverNicInfo.TcpIpServiceUuid))
                        {
                            serverNicInfo.DNSDomain   = (string)managementObject.Properties["DNSDomain"].Value;
                            serverNicInfo.IPAddresses = (string[])managementObject["IPAddress"];
                            serverNicInfo.IPMasks     = (string[])managementObject["IPSubnet"];
                            serverNicInfo.IPGateways  = managementObject["DefaultIPGateway"] != null ? (string[])managementObject["DefaultIPGateway"] : (string[])null;
                            serverNicInfo.DNSAddrs    = managementObject["DNSServerSearchOrder"] != null ? (string[])managementObject["DNSServerSearchOrder"] : (string[])null;
                            serverNicInfo.DHCPEnabled = (bool)managementObject["DHCPEnabled"];
                            ManagementObject firstElement = WMIUtils.GetFirstElement(managementObject.GetRelated("Win32_NetworkAdapter"));
                            serverNicInfo.FriendlyName = (string)firstElement["NetConnectionID"];
                            dictionary.Add(serverNicInfo.TcpIpServiceUuid, serverNicInfo);
                        }
                    }
                }
            }
        }
        return(CUtils.CollectionToArray <ServerNicInfo>((ICollection <ServerNicInfo>)dictionary.Values));
    }