public Discover() { int size=0; int r = GetNetworkParams(null, ref size); if ((r != ERROR_SUCCESS) && (r != ERROR_BUFFER_OVERFLOW)) throw new Exception("Error invoking GetNetworkParams() : " + r); Byte[] buffer= new Byte[size]; r = GetNetworkParams(buffer, ref size); if (r != ERROR_SUCCESS) throw new Exception("Error invoking GetNetworkParams() " + r); FixedInfo PFixedInfo= new FixedInfo(); ByteArray_To_FixedInfo(ref PFixedInfo, buffer, Marshal.SizeOf(PFixedInfo)); this.hostname = PFixedInfo.HostName; this.domainname = PFixedInfo.DomainName; ArrayList ips = new ArrayList(); ips.Add(IPAddress.Parse(PFixedInfo.DnsServerList.IPAddressString)); IPAddrString ListItem = new IPAddrString(); IntPtr ListNext = new IntPtr(); ListNext = PFixedInfo.DnsServerList.NextPointer; while (ListNext.ToInt32() != 0) { IntPtr_To_IPAddrString(ref ListItem, ListNext, Marshal.SizeOf(ListItem)); ips.Add(IPAddress.Parse(ListItem.IPAddressString)); ListNext = ListItem.NextPointer; } this.dnsServers = (IPAddress[]) ips.ToArray(typeof(IPAddress)); }
public static ArrayList GetDnsServers() { byte[] buffer = new byte[0]; int length = 0; GetNetworkParams(buffer, ref length);//call to get the size needed buffer = new byte[length]; GetNetworkParams(buffer, ref length);//now call for real FixedInfo info = new FixedInfo(new MemoryStream(buffer)); ArrayList servers = new ArrayList(); foreach (IpAddrString entry in info.DnsServerList) servers.Add(entry.IpAddress); return servers; }
public static ArrayList GetDnsServers() { byte[] buffer = new byte[0]; int length = 0; GetNetworkParams(buffer, ref length); //call to get the size needed buffer = new byte[length]; GetNetworkParams(buffer, ref length); //now call for real FixedInfo info = new FixedInfo(new MemoryStream(buffer)); ArrayList servers = new ArrayList(); foreach (IpAddrString entry in info.DnsServerList) { servers.Add(entry.IpAddress); } return(servers); }
private static extern void ByteArray_To_FixedInfo(ref FixedInfo dst, Byte[] src, int size);