Domain Name System (DNS)

Overview of the Domain Name System (DNS) technology.

To develop Domain Name System (DNS), you need these headers:

For programming guidance for this technology, see:

Enumerations

 
DNS_CHARSET

The DNS_CHARSET enumeration specifies the character set used.
DNS_CONFIG_TYPE

The DNS_CONFIG_TYPE enumeration provides DNS configuration type information.
DNS_FREE_TYPE

The DNS_FREE_TYPE enumeration specifies the type of data to free.
DNS_NAME_FORMAT

The DNS_NAME_FORMAT enumeration specifies name format information for DNS.
DNS_PROXY_INFORMATION_TYPE

The DNS_PROXY_INFORMATION_TYPE enumeration defines the proxy information type in the DNS_PROXY_INFORMATION structure.
DNS_SECTION

The DNS_SECTION enumeration is used in record flags, and as an index into DNS wire message header section counts.

Functions

 
DNS_QUERY_COMPLETION_ROUTINE

The DNS_QUERY_COMPLETION_ROUTINE callback is used to asynchronously return the results of a DNS query.
DNS_QUERY_RAW_COMPLETION_ROUTINE

The function signature of an asynchronous callback function that you implement. The system calls your implementation with the results of a query that you initiated by calling DnsQueryRaw.
DNS_SERVICE_BROWSE_CALLBACK

Used to asynchronously return the results of a DNS-SD query.
DNS_SERVICE_REGISTER_COMPLETE

Used to notify your application that service registration has completed.
DNS_SERVICE_RESOLVE_COMPLETE

Used to asynchronously return the results of a service resolve operation.
DnsAcquireContextHandle_A

The DnsAcquireContextHandle function type acquires a context handle to a set of credentials. (ANSI)
DnsAcquireContextHandle_W

The DnsAcquireContextHandle function type acquires a context handle to a set of credentials. (Unicode)
DnsCancelQuery

The DnsCancelQuery function can be used to cancel a pending query to the DNS namespace.
DnsCancelQueryRaw

Cancels a query that was initiated by calling DnsQueryRaw.
DnsExtractRecordsFromMessage_UTF8

The DnsExtractRecordsFromMessage function type extracts resource records (RR) from a DNS message, and stores those records in a DNS_RECORD structure. (DnsExtractRecordsFromMessage_UTF8)
DnsExtractRecordsFromMessage_W

The DnsExtractRecordsFromMessage function type extracts resource records (RR) from a DNS message, and stores those records in a DNS_RECORD structure. (DnsExtractRecordsFromMessage_W)
DnsFree

Frees memory allocated for DNS records that was obtained using the DnsQuery function.
DnsFreeCustomServers

Frees the array of custom servers that was returned from a previous call to DnsGetApplicationSettings.
DnsFreeProxyName

Frees memory allocated for the proxyName member of a DNS_PROXY_INFORMATION structure obtained using the DnsGetProxyInformation function.
DnsGetApplicationSettings

Retrieves the per-application DNS settings.
DnsGetProxyInformation

The DnsGetProxyInformation function returns the proxy information for a DNS server's name resolution policy table.
DnsModifyRecordsInSet_A

Function adds, modifies or removes a Resource Record (RR) set that may have been previously registered with DNS servers. (DnsModifyRecordsInSet_A)
DnsModifyRecordsInSet_UTF8

Function adds, modifies or removes a Resource Record (RR) set that may have been previously registered with DNS servers. (DnsModifyRecordsInSet_UTF8)
DnsModifyRecordsInSet_W

Function adds, modifies or removes a Resource Record (RR) set that may have been previously registered with DNS servers. (DnsModifyRecordsInSet_W)
DnsNameCompare

The DnsNameCompare function compares two DNS names. (DnsNameCompare_UTF8)
DnsNameCompare_A

The DnsNameCompare function compares two DNS names. (DnsNameCompare_A)
DnsNameCompare_W

The DnsNameCompare function compares two DNS names. (DnsNameCompare_W)
DnsQuery_A

Is the generic query interface to the DNS namespace, and provides application developers with a DNS query resolution interface. (DnsQuery_A)
DnsQuery_UTF8

Is the generic query interface to the DNS namespace, and provides application developers with a DNS query resolution interface. (DnsQuery_UTF8)
DnsQuery_W

Is the generic query interface to the DNS namespace, and provides application developers with a DNS query resolution interface. (DnsQuery_W)
DnsQueryConfig

The DnsQueryConfig function enables application programmers to query for the configuration of the local computer or a specific adapter.
DnsQueryEx

The asynchronous generic query interface to the DNS namespace, and provides application developers with a DNS query resolution interface.
DnsQueryRaw

Enables you to perform a DNS query that accepts either a raw packet containing a DNS query, or a query name and type.
DnsQueryRawResultFree

Frees the memory allocated to a DNS_QUERY_RAW_RESULT structure object.
DnsRecordCompare

The DnsRecordCompare function compares two DNS resource records (RR).
DnsRecordCopyEx

The DnsRecordCopyEx function creates a copy of a specified resource record (RR). The DnsRecordCopyEx function is also capable of converting the character encoding during the copy operation.
DnsRecordListFree

Frees memory allocated for DNS records obtained using the DnsQuery function.
DnsRecordSetCompare

The DnsRecordSetCompare function compares two RR sets.
DnsRecordSetCopyEx

The DnsRecordSetCopyEx function creates a copy of a specified resource record set. The DnsRecordSetCopyEx function is also capable of converting the character encoding during the copy operation.
DnsRecordSetDetach

The DnsRecordSetDetach function detaches the first record set from a specified list of DNS records.
DnsReleaseContextHandle

The DnsReleaseContextHandle function releases memory used to store the credentials of a specific account.
DnsReplaceRecordSetA

Replaces an existing resource record (RR) set. (DnsReplaceRecordSetA)
DnsReplaceRecordSetUTF8

Replaces an existing resource record (RR) set. (DnsReplaceRecordSetUTF8)
DnsReplaceRecordSetW

Replaces an existing resource record (RR) set. (DnsReplaceRecordSetW)
DnsServiceBrowse

Used to initiate a DNS-SD discovery for services running on the local network.
DnsServiceBrowseCancel

Used to cancel a running DNS-SD discovery query.
DnsServiceConstructInstance

Used to build a DNS_SERVICE_INSTANCE structure from data that describes it.
DnsServiceCopyInstance

Used to copy a DNS_SERVICE_INSTANCE structure.
DnsServiceDeRegister

Used to remove a registered service.
DnsServiceFreeInstance

Used to free the resources associated with a DNS_SERVICE_INSTANCE structure.
DnsServiceRegister

Used to register a discoverable service on this device. (DnsServiceRegister)
DnsServiceRegisterCancel

Used to cancel a pending registration operation.
DnsServiceResolve

Used to obtain more information about a service advertised on the local network.
DnsServiceResolveCancel

Used to cancel a running DNS-SD resolve query.
DnsSetApplicationSettings

Configures per-application DNS settings. This includes the ability to set per-application DNS servers either as fallback to the system configured servers, or exclusively.
DnsStartMulticastQuery

Used to register a discoverable service on this device. (DnsStartMulticastQuery)
DnsStopMulticastQuery

Used to stop a running DnsStartMulticastQuery operation.
DnsValidateName

The DnsValidateName macro (windns.h) function validates the status of a specified DNS name.
DnsValidateName_A

The DnsValidateName function validates the status of a specified DNS name. (DnsValidateName_A)
DnsValidateName_UTF8

The DnsValidateName_UTF8 function (windns.h) function validates the status of a specified DNS name.
DnsValidateName_W

The DnsValidateName function validates the status of a specified DNS name. (DnsValidateName_W)
DnsValidateServerStatus

The DnsValidateServerStatus function validates an IP address as a suitable DNS server.
DnsWriteQuestionToBuffer_UTF8

The DnsWriteQuestionToBuffer function type creates a DNS query message and stores it in a DNS_MESSAGE_BUFFER structure. (DnsWriteQuestionToBuffer_UTF8)
DnsWriteQuestionToBuffer_W

The DnsWriteQuestionToBuffer function type creates a DNS query message and stores it in a DNS_MESSAGE_BUFFER structure. (DnsWriteQuestionToBuffer_W)
MDNS_QUERY_CALLBACK

Used to asynchronously return the results of an mDNS query.

Structures

 
DNS_A_DATA

The DNS_A_DATA structure represents a DNS address (A) record as specified in section 3.4.1 of RFC 1035.
DNS_AAAA_DATA

The DNS_AAAA_DATA structure represents a DNS IPv6 (AAAA) record as specified in RFC 3596.
DNS_ADDR

A DNS_ADDR structure stores an IPv4 or IPv6 address.
DNS_ADDR_ARRAY

Stores an array of IPv4 or IPv6 addresses.
DNS_APPLICATION_SETTINGS

Represents per-application DNS settings.
DNS_ATMA_DATA

The DNS_ATMA_DATA structure represents a DNS ATM address (ATMA) resource record (RR).
DNS_CUSTOM_SERVER

Represents a DNS custom server. A DNS_CUSTOM_SERVER object is passed to DnsQueryEx via the DNS_QUERY_REQUEST3 structure.
DNS_DHCID_DATA

Represents a DNS Dynamic Host Configuration Protocol Information (DHCID) resource record (RR) as specified in section 3 of RFC 4701.
DNS_DS_DATA

Represents a DS resource record (RR) as specified in section 2 of RFC 4034 and is used to verify the contents of DNS_DNSKEY_DATA.
DNS_HEADER

The DNS_HEADER structure contains DNS header information used when sending DNS messages as specified in section 4.1.1 of RFC 1035.
DNS_KEY_DATA

The DNS_KEY_DATA structure represents a DNS key (KEY) resource record (RR) as specified in RFC 3445.
DNS_LOC_DATA

The DNS_LOC_DATA structure represents a DNS location (LOC) resource record (RR) as specified in RFC 1876.
DNS_MESSAGE_BUFFER

The DNS_MESSAGE_BUFFER structure stores message information for DNS queries.
DNS_MINFO_DATAA

The DNS_MINFO_DATA structure represents a DNS mail information (MINFO) record as specified in section 3.3.7 of RFC 1035. (ANSI)
DNS_MINFO_DATAW

The DNS_MINFO_DATA structure represents a DNS mail information (MINFO) record as specified in section 3.3.7 of RFC 1035. (Unicode)
DNS_MX_DATAA

The DNS_MX_DATA structure represents a DNS mail exchanger (MX) record as specified in section 3.3.9 of RFC 1035. (ANSI)
DNS_MX_DATAW

The DNS_MX_DATA structure represents a DNS mail exchanger (MX) record as specified in section 3.3.9 of RFC 1035. (Unicode)
DNS_NAPTR_DATAA

The DNS_NAPTR_DATA structure represents a Naming Authority Pointer (NAPTR) DNS Resource Record (RR) as specified in RFC 2915. (ANSI)
DNS_NAPTR_DATAW

The DNS_NAPTR_DATA structure represents a Naming Authority Pointer (NAPTR) DNS Resource Record (RR) as specified in RFC 2915. (Unicode)
DNS_NSEC_DATAA

Represents an NSEC resource record (RR) as specified in section 4 of RFC 4034. (ANSI)
DNS_NSEC_DATAW

Represents an NSEC resource record (RR) as specified in section 4 of RFC 4034. (Unicode)
DNS_NULL_DATA

The DNS_NULL_DATA structure represents NULL data for a DNS resource record as specified in section 3.3.10 of RFC 1035.
DNS_NXT_DATAA

The DNS_NXT_DATA structure represents a DNS next (NXT) resource record (RR) as specified in section 5 of RFC 2535. (ANSI)
DNS_NXT_DATAW

The DNS_NXT_DATA structure represents a DNS next (NXT) resource record (RR) as specified in section 5 of RFC 2535. (Unicode)
DNS_OPT_DATA

Represents a DNS Option (OPT) resource record (RR) as specified in section 4 of RFC 2671.
DNS_PROXY_INFORMATION

Contains the proxy information for a DNS server's name resolution policy table.
DNS_PTR_DATAA

The DNS_PTR_DATA structure represents a DNS pointer (PTR) record as specified in section 3.3.12 of RFC 1035. (ANSI)
DNS_PTR_DATAW

The DNS_PTR_DATA structure represents a DNS pointer (PTR) record as specified in section 3.3.12 of RFC 1035. (Unicode)
DNS_QUERY_CANCEL

A DNS_QUERY_CANCEL structure can be used to cancel an asynchronous DNS query.
DNS_QUERY_RAW_CANCEL

Represents a DNS raw query cancel handle.
DNS_QUERY_RAW_REQUEST

Represents a DNS raw query request (see DnsQueryRaw).
DNS_QUERY_RAW_RESULT

Represents a DNS raw query result (see DNS_QUERY_RAW_COMPLETION_ROUTINE).
DNS_QUERY_REQUEST

The DNS_QUERY_REQUEST structure contains the DNS query parameters used in a call to DnsQueryEx.
DNS_QUERY_REQUEST3

Contains the DNS query parameters used in a call to DnsQueryEx.
DNS_QUERY_RESULT

A DNS_QUERY_RESULT structure contains the DNS query results returned from a call to DnsQueryEx.
DNS_RECORD_FLAGS

The DNS_RECORD_FLAGS structure is used to set flags for use in the DNS_RECORD structure.
DNS_RECORDA

Stores a DNS resource record (RR). (ANSI)
DNS_RECORDW

Stores a DNS resource record (RR). (Unicode)
DNS_RRSET

The DNS_RRSET structure contains information about a DNS Resource Record (RR) set.
DNS_SERVICE_BROWSE_REQUEST

Contains the query parameters used in a call to DnsServiceBrowse.
DNS_SERVICE_CANCEL

Used to cancel an asynchronous DNS-SD operation.
DNS_SERVICE_INSTANCE

Represents a DNS service running on the network.
DNS_SERVICE_REGISTER_REQUEST

Contains the information necessary to advertise a service using DnsServiceRegister, or to stop advertising it using DnsServiceDeRegister.
DNS_SERVICE_RESOLVE_REQUEST

Contains the query parameters used in a call to DnsServiceResolve.
DNS_SIG_DATAA

Structure represents a DNS Security Extensions (DNSSEC) cryptographic signature (SIG) resource record (RR) as specified in RFC 4034. (ANSI)
DNS_SIG_DATAW

Structure represents a DNS Security Extensions (DNSSEC) cryptographic signature (SIG) resource record (RR) as specified in RFC 4034. (Unicode)
DNS_SOA_DATAA

The DNS_SOA_DATA structure represents a DNS start of authority (SOA) record as specified in section 3.3.13 of RFC 1035. (ANSI)
DNS_SOA_DATAW

The DNS_SOA_DATA structure represents a DNS start of authority (SOA) record as specified in section 3.3.13 of RFC 1035. (Unicode)
DNS_SRV_DATAA

The DNS_SRV_DATA structure represents a DNS service (SRV) record as specified in RFC 2782. (ANSI)
DNS_SRV_DATAW

The DNS_SRV_DATA structure represents a DNS service (SRV) record as specified in RFC 2782. (Unicode)
DNS_TKEY_DATAA

The DNS_TKEY_DATA structure represents a DNS TKEY resource record, used to establish and delete an algorithm's shared-secret keys between a DNS resolver and server as specified in RFC 2930. (ANSI)
DNS_TKEY_DATAW

The DNS_TKEY_DATA structure represents a DNS TKEY resource record, used to establish and delete an algorithm's shared-secret keys between a DNS resolver and server as specified in RFC 2930. (Unicode)
DNS_TSIG_DATAA

The DNS_TSIG_DATA structure represents a secret key transaction authentication (TSIG) resource record (RR) as specified in RFC 2845 and RFC 3645. (ANSI)
DNS_TSIG_DATAW

The DNS_TSIG_DATA structure represents a secret key transaction authentication (TSIG) resource record (RR) as specified in RFC 2845 and RFC 3645. (Unicode)
DNS_TXT_DATAA

The DNS_TXT_DATA structure represents a DNS text (TXT) record as specified in section 3.3.14 of RFC 1035. (ANSI)
DNS_TXT_DATAW

The DNS_TXT_DATA structure represents a DNS text (TXT) record as specified in section 3.3.14 of RFC 1035. (Unicode)
DNS_WINS_DATA

The DNS_WINS_DATA structure represents a DNS Windows Internet Name Service (WINS) record.
DNS_WINSR_DATAA

The DNS_WINSR_DATA structure represents a DNS Windows Internet Name Service reverse-lookup (WINSR) record. (ANSI)
DNS_WINSR_DATAW

The DNS_WINSR_DATA structure represents a DNS Windows Internet Name Service reverse-lookup (WINSR) record. (Unicode)
DNS_WIRE_QUESTION

The DNS_WIRE_QUESTION structure contains information about a DNS question transmitted across the network as specified in section 4.1.2 of RFC 1035..
DNS_WIRE_RECORD

The DNS_WIRE_RECORD structure contains information about a DNS wire record transmitted across the network as specified in section 4.1.3 of RFC 1035.
DNS_WKS_DATA

The DNS_WKS_DATA structure represents a DNS well-known services (WKS) record as specified in section 3.4.2 of RFC 1035.
IP4_ARRAY

The IP4_ARRAY structure stores an array of IPv4 addresses.
IP6_ADDRESS

The IP6_ADDRESS structure stores an IPv6 address. (IP6_ADDRESS)
MDNS_QUERY_HANDLE

Contains information related to an ongoing MDNS query. Your application must not modify its contents.
MDNS_QUERY_REQUEST

Contains the necessary information to perform an mDNS query.