3 #pragma GCC system_header
9 #define DNS_QUERY_STANDARD 0x0
10 #define DNS_QUERY_ACCEPT_TRUNCATED_RESPONSE 0x1
11 #define DNS_QUERY_USE_TCP_ONLY 0x2
12 #define DNS_QUERY_NO_RECURSION 0x4
13 #define DNS_QUERY_BYPASS_CACHE 0x8
14 #define DNS_QUERY_NO_WIRE_QUERY 0x10
15 #define DNS_QUERY_NO_LOCAL_NAME 0x20
16 #define DNS_QUERY_NO_HOSTS_FILE 0x40
17 #define DNS_QUERY_NO_NETBT 0x80
18 #define DNS_QUERY_TREAT_AS_FQDN 0x1000
19 #define DNS_QUERY_WIRE_ONLY 0x100
20 #define DNS_QUERY_RETURN_MESSAGE 0x200
21 #define DNS_QUERY_DONT_RESET_TTL_VALUES 0x100000
22 #define DNS_QUERY_RESERVED 0xff000000
24 #define DNS_UPDATE_SECURITY_USE_DEFAULT 0x0
25 #define DNS_UPDATE_SECURITY_OFF 0x10
26 #define DNS_UPDATE_SECURITY_ON 0x20
27 #define DNS_UPDATE_SECURITY_ONLY 0x100
28 #define DNS_UPDATE_CACHE_SECURITY_CONTEXT 0x200
29 #define DNS_UPDATE_TEST_USE_LOCAL_SYS_ACCT 0x400
30 #define DNS_UPDATE_FORCE_SECURITY_NEGO 0x800
31 #define DNS_UPDATE_RESERVED 0xffff0000
34 typedef DWORD IP4_ADDRESS;
35 typedef DWORD DNS_STATUS;
90 DNS_TYPE_ANY=DNS_TYPE_ALL
92 typedef enum _DNS_CHARSET
101 DnsConfigPrimaryDomainName_W,
102 DnsConfigPrimaryDomainName_A,
103 DnsConfigPrimaryDomainName_UTF8,
104 DnsConfigAdapterDomainName_W,
105 DnsConfigAdapterDomainName_A,
106 DnsConfigAdapterDomainName_UTF8,
107 DnsConfigDnsServerList,
109 DnsConfigAdapterInfo,
110 DnsConfigPrimaryHostNameRegistrationEnabled,
111 DnsConfigAdapterHostNameRegistrationEnabled,
112 DnsConfigAddressRegistrationMaxCount,
115 DnsConfigHostName_UTF8,
116 DnsConfigFullHostName_W,
117 DnsConfigFullHostName_A,
118 DnsConfigFullHostName_UTF8
124 DnsFreeParsedMessageFields
126 typedef enum _DNS_NAME_FORMAT
131 DnsNameHostnameLabel,
142 typedef struct _IP4_ARRAY {
144 IP4_ADDRESS AddrArray[1];
145 } IP4_ARRAY, *PIP4_ARRAY;
148 } IP6_ADDRESS, *PIP6_ADDRESS, DNS_IP6_ADDRESS, *PDNS_IP6_ADDRESS;
149 typedef struct _DNS_HEADER {
151 BYTE RecursionDesired;
158 BYTE RecursionAvailable;
161 WORD NameServerCount;
162 WORD AdditionalCount;
163 } DNS_HEADER, *PDNS_HEADER;
164 typedef struct _DNS_MESSAGE_BUFFER {
165 DNS_HEADER MessageHead;
167 } DNS_MESSAGE_BUFFER, *PDNS_MESSAGE_BUFFER;
168 typedef struct _DnsRecordFlags {
175 #define DNSREC_QUESTION 0
176 #define DNSREC_ANSWER 1
177 #define DNSREC_AUTHORITY 2
178 #define DNSREC_ADDITIONAL 3
180 IP4_ADDRESS IpAddress;
181 } DNS_A_DATA, *PDNS_A_DATA;
183 DNS_IP6_ADDRESS Ip6Address;
184 } DNS_AAAA_DATA, *PDNS_AAAA_DATA;
185 #define DNS_ATMA_MAX_ADDR_LENGTH 20
188 BYTE Address[DNS_ATMA_MAX_ADDR_LENGTH];
189 } DNS_ATMA_DATA, *PDNS_ATMA_DATA;
195 } DNS_KEY_DATA, *PDNS_KEY_DATA;
204 } DNS_LOC_DATA, *PDNS_LOC_DATA;
207 LPTSTR pNameErrorsMailbox;
208 } DNS_MINFO_DATA, *PDNS_MINFO_DATA;
210 LPTSTR pNameExchange;
213 } DNS_MX_DATA, *PDNS_MX_DATA;
217 } DNS_NULL_DATA, *PDNS_NULL_DATA;
222 } DNS_NXT_DATA, *PDNS_NXT_DATA;
225 } DNS_PTR_DATA, *PDNS_PTR_DATA;
237 } DNS_SIG_DATA, *PDNS_SIG_DATA;
239 LPTSTR pNamePrimaryServer;
240 LPTSTR pNameAdministrator;
246 } DNS_SOA_DATA, *PDNS_SOA_DATA;
253 } DNS_SRV_DATA, *PDNS_SRV_DATA;
256 LPTSTR pStringArray[1];
257 } DNS_TXT_DATA, *PDNS_TXT_DATA;
259 LPTSTR pNameAlgorithm;
260 PBYTE pAlgorithmPacket;
269 UCHAR cAlgNameLength;
270 BOOL bPacketPointers;
271 } DNS_TKEY_DATA, *PDNS_TKEY_DATA;
273 LPTSTR pNameAlgorithm;
274 PBYTE pAlgorithmPacket;
277 LONGLONG i64CreateTime;
283 UCHAR cAlgNameLength;
284 BOOL bPacketPointers;
285 } DNS_TSIG_DATA, *PDNS_TSIG_DATA;
288 DWORD dwLookupTimeout;
289 DWORD dwCacheTimeout;
290 DWORD cWinsServerCount;
291 IP4_ADDRESS WinsServers[1];
292 } DNS_WINS_DATA, *PDNS_WINS_DATA;
295 DWORD dwLookupTimeout;
296 DWORD dwCacheTimeout;
297 LPTSTR pNameResultDomain;
298 } DNS_WINSR_DATA, *PDNS_WINSR_DATA;
299 typedef struct _DNS_WIRE_QUESTION {
302 } DNS_WIRE_QUESTION, *PDNS_WIRE_QUESTION;
303 typedef struct _DNS_WIRE_RECORD {
308 } DNS_WIRE_RECORD, *PDNS_WIRE_RECORD;
310 IP4_ADDRESS IpAddress;
313 } DNS_WKS_DATA, *PDNS_WKS_DATA;
314 typedef struct _DnsRecord {
315 struct _DnsRecord* pNext;
327 DNS_SOA_DATA SOA, Soa;
328 DNS_PTR_DATA PTR, Ptr, NS, Ns, CNAME, Cname, MB, Mb,
329 MD, Md, MF, Mf, MG, Mg, MR, Mr;
330 DNS_MINFO_DATA MINFO, Minfo, RP, Rp;
331 DNS_MX_DATA MX, Mx, AFSDB, Afsdb, RT, Rt;
332 DNS_TXT_DATA HINFO, Hinfo, ISDN, Isdn, TXT, Txt, X25;
334 DNS_WKS_DATA WKS, Wks;
336 DNS_KEY_DATA KEY, Key;
337 DNS_SIG_DATA SIG, Sig;
338 DNS_ATMA_DATA ATMA, Atma;
339 DNS_NXT_DATA NXT, Nxt;
340 DNS_SRV_DATA SRV, Srv;
341 DNS_TKEY_DATA TKEY, Tkey;
342 DNS_TSIG_DATA TSIG, Tsig;
343 DNS_WINS_DATA WINS, Wins;
344 DNS_WINSR_DATA WINSR, WinsR, NBSTAT, Nbstat;
346 } DNS_RECORD, *PDNS_RECORD;
347 typedef struct _DnsRRSet {
348 PDNS_RECORD pFirstRR;
350 } DNS_RRSET, *PDNS_RRSET;
352 DNS_STATUS WINAPI DnsAcquireContextHandle_A(DWORD,PVOID,HANDLE*);
353 DNS_STATUS WINAPI DnsAcquireContextHandle_W(DWORD,PVOID,HANDLE*);
354 DNS_STATUS WINAPI DnsExtractRecordsFromMessage_W(PDNS_MESSAGE_BUFFER,WORD,PDNS_RECORD*);
355 DNS_STATUS WINAPI DnsExtractRecordsFromMessage_UTF8(PDNS_MESSAGE_BUFFER,WORD,PDNS_RECORD*);
356 DNS_STATUS WINAPI DnsModifyRecordsInSet_A(PDNS_RECORD,PDNS_RECORD,DWORD,HANDLE,PIP4_ARRAY,PVOID);
357 DNS_STATUS WINAPI DnsModifyRecordsInSet_W(PDNS_RECORD,PDNS_RECORD,DWORD,HANDLE,PIP4_ARRAY,PVOID);
358 DNS_STATUS WINAPI DnsModifyRecordsInSet_UTF8(PDNS_RECORD,PDNS_RECORD,DWORD,HANDLE,PIP4_ARRAY,PVOID);
359 BOOL WINAPI DnsNameCompare_A(LPSTR,LPSTR);
360 BOOL WINAPI DnsNameCompare_W(LPWSTR,LPWSTR);
361 DNS_STATUS WINAPI DnsQuery_A(PCSTR,WORD,DWORD,PIP4_ARRAY,PDNS_RECORD*,PVOID*);
362 DNS_STATUS WINAPI DnsQuery_W(PCWSTR,WORD,DWORD,PIP4_ARRAY,PDNS_RECORD*,PVOID*);
363 DNS_STATUS WINAPI DnsQuery_UTF8(PCSTR,WORD,DWORD,PIP4_ARRAY,PDNS_RECORD*,PVOID*);
364 DNS_STATUS WINAPI DnsQueryConfig(DNS_CONFIG_TYPE,DWORD,PWSTR,PVOID,PVOID,PDWORD);
365 BOOL WINAPI DnsRecordCompare(PDNS_RECORD,PDNS_RECORD);
366 PDNS_RECORD WINAPI DnsRecordCopyEx(PDNS_RECORD,DNS_CHARSET,DNS_CHARSET);
367 void WINAPI DnsRecordListFree(PDNS_RECORD,DNS_FREE_TYPE);
368 BOOL WINAPI DnsRecordSetCompare(PDNS_RECORD,PDNS_RECORD,PDNS_RECORD*,PDNS_RECORD*);
369 PDNS_RECORD WINAPI DnsRecordSetCopyEx(PDNS_RECORD,DNS_CHARSET,DNS_CHARSET);
370 PDNS_RECORD WINAPI DnsRecordSetDetach(PDNS_RECORD);
371 void WINAPI DnsReleaseContextHandle(HANDLE);
372 DNS_STATUS WINAPI DnsReplaceRecordSetA(PDNS_RECORD,DWORD,HANDLE,PIP4_ARRAY,PVOID);
373 DNS_STATUS WINAPI DnsReplaceRecordSetW(PDNS_RECORD,DWORD,HANDLE,PIP4_ARRAY,PVOID);
374 DNS_STATUS WINAPI DnsReplaceRecordSetUTF8(PDNS_RECORD,DWORD,HANDLE,PIP4_ARRAY,PVOID);
375 DNS_STATUS WINAPI DnsValidateName_A(LPCSTR,DNS_NAME_FORMAT);
376 DNS_STATUS WINAPI DnsValidateName_W(LPCWSTR, DNS_NAME_FORMAT);
377 DNS_STATUS WINAPI DnsValidateName_UTF8(LPCSTR,DNS_NAME_FORMAT);
378 BOOL WINAPI DnsWriteQuestionToBuffer_W(PDNS_MESSAGE_BUFFER,LPDWORD,LPWSTR,WORD,WORD,BOOL);
379 BOOL WINAPI DnsWriteQuestionToBuffer_UTF8(PDNS_MESSAGE_BUFFER,LPDWORD,LPSTR,WORD,WORD,BOOL);
382 #define DnsAcquireContextHandle DnsAcquireContextHandle_W
383 #define DnsModifyRecordsInSet DnsModifyRecordsInSet_W
384 #define DnsNameCompare DnsNameCompare_W
385 #define DnsQuery DnsQuery_W
386 #define DnsReplaceRecordSet DnsReplaceRecordSetW
387 #define DnsValidateName DnsValidateName_W
389 #define DnsAcquireContextHandle DnsAcquireContextHandle_A
390 #define DnsModifyRecordsInSet DnsModifyRecordsInSet_A
391 #define DnsNameCompare DnsNameCompare_A
392 #define DnsQuery DnsQuery_A
393 #define DnsReplaceRecordSet DnsReplaceRecordSetA
394 #define DnsValidateName DnsValidateName_A
397 #endif /* RC_INVOKED */
403 #endif /* _WINDNS_H */