Exemple #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));
        }
Exemple #2
0
 private static extern void IntPtr_To_IPAddrString(ref IPAddrString dst,	IntPtr src,	int	size);