Example #1
0
        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));
        }
Example #2
0
		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;
		}
Example #3
0
        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);
        }
Example #4
0
 private static extern void ByteArray_To_FixedInfo(ref FixedInfo	dst, Byte[]	src, int size);