Ejemplo n.º 1
0
        /// <summary>
        /// Retrieves an A-record from a DNS server
        /// </summary>
        /// <param name="dnsServer"></param>
        /// <param name="name"></param>
        /// <param name="options"></param>
        /// <returns></returns>
        public static ARecord[] QueryARecord(IPAddress dnsServer, string name, QueryOptions options)
        {
            IntPtr    dnsRecord = IntPtr.Zero;
            IP4_ARRAY server    = new IP4_ARRAY();

            server.AddrCount = 1;
            server.AddrArray = dnsServer.GetAddressBytes();
            int result = NativeMethods.DnsQuery_W(name, DNS_TYPE.TypeA, options, server, ref dnsRecord, IntPtr.Zero);

            if (result != 0)
            {
                throw DnsException.FromErrorCode(result);
            }

            using (DNS_RECORD_LIST records = DNS_RECORD_LIST.FromIntPtr(dnsRecord))
            {
                List <ARecord> list = new List <ARecord>();

                foreach (DNS_RECORD record in records)
                {
                    ARecord r = new ARecord();
                    r.Address = new IPAddress(record.data);
                    r.Name    = record.pName;
                    r.TTL     = (int)record.dwTtl;
                    list.Add(r);
                }

                return(list.ToArray());
            }
        }
Ejemplo n.º 2
0
        public static DNS_RECORD_LIST FromIntPtr(IntPtr ptr)
        {
            DNS_RECORD_LIST list = new DNS_RECORD_LIST();

            DNS_RECORD record = new DNS_RECORD(ptr);

            list.Add(record);
            return(list);
        }