4 #pragma GCC system_header
11 #define DNS_QUERY_STANDARD 0x0
12 #define DNS_QUERY_ACCEPT_TRUNCATED_RESPONSE 0x1
13 #define DNS_QUERY_USE_TCP_ONLY 0x2
14 #define DNS_QUERY_NO_RECURSION 0x4
15 #define DNS_QUERY_BYPASS_CACHE 0x8
16 #define DNS_QUERY_NO_WIRE_QUERY 0x10
17 #define DNS_QUERY_NO_LOCAL_NAME 0x20
18 #define DNS_QUERY_NO_HOSTS_FILE 0x40
19 #define DNS_QUERY_NO_NETBT 0x80
20 #define DNS_QUERY_TREAT_AS_FQDN 0x1000
21 #define DNS_QUERY_WIRE_ONLY 0x100
22 #define DNS_QUERY_RETURN_MESSAGE 0x200
23 #define DNS_QUERY_DONT_RESET_TTL_VALUES 0x100000
24 #define DNS_QUERY_RESERVED 0xff000000
26 #define DNS_UPDATE_SECURITY_USE_DEFAULT 0x0
27 #define DNS_UPDATE_SECURITY_OFF 0x10
28 #define DNS_UPDATE_SECURITY_ON 0x20
29 #define DNS_UPDATE_SECURITY_ONLY 0x100
30 #define DNS_UPDATE_CACHE_SECURITY_CONTEXT 0x200
31 #define DNS_UPDATE_TEST_USE_LOCAL_SYS_ACCT 0x400
32 #define DNS_UPDATE_FORCE_SECURITY_NEGO 0x800
33 #define DNS_UPDATE_RESERVED 0xffff0000
36 typedef DWORD IP4_ADDRESS
;
37 typedef DWORD DNS_STATUS
;
92 DNS_TYPE_ANY
=DNS_TYPE_ALL
94 typedef enum _DNS_CHARSET
103 DnsConfigPrimaryDomainName_W
,
104 DnsConfigPrimaryDomainName_A
,
105 DnsConfigPrimaryDomainName_UTF8
,
106 DnsConfigAdapterDomainName_W
,
107 DnsConfigAdapterDomainName_A
,
108 DnsConfigAdapterDomainName_UTF8
,
109 DnsConfigDnsServerList
,
111 DnsConfigAdapterInfo
,
112 DnsConfigPrimaryHostNameRegistrationEnabled
,
113 DnsConfigAdapterHostNameRegistrationEnabled
,
114 DnsConfigAddressRegistrationMaxCount
,
117 DnsConfigHostName_UTF8
,
118 DnsConfigFullHostName_W
,
119 DnsConfigFullHostName_A
,
120 DnsConfigFullHostName_UTF8
126 DnsFreeParsedMessageFields
128 typedef enum _DNS_NAME_FORMAT
133 DnsNameHostnameLabel
,
144 typedef struct _IP4_ARRAY
{
146 IP4_ADDRESS AddrArray
[1];
147 } IP4_ARRAY
, *PIP4_ARRAY
;
150 } IP6_ADDRESS
, *PIP6_ADDRESS
, DNS_IP6_ADDRESS
, *PDNS_IP6_ADDRESS
;
151 typedef struct _DNS_HEADER
{
153 BYTE RecursionDesired
;
160 BYTE RecursionAvailable
;
163 WORD NameServerCount
;
164 WORD AdditionalCount
;
165 } DNS_HEADER
, *PDNS_HEADER
;
166 typedef struct _DNS_MESSAGE_BUFFER
{
167 DNS_HEADER MessageHead
;
169 } DNS_MESSAGE_BUFFER
, *PDNS_MESSAGE_BUFFER
;
170 typedef struct _DnsRecordFlags
{
178 IP4_ADDRESS IpAddress
;
179 } DNS_A_DATA
, *PDNS_A_DATA
;
181 DNS_IP6_ADDRESS Ip6Address
;
182 } DNS_AAAA_DATA
, *PDNS_AAAA_DATA
;
183 #define DNS_ATMA_MAX_ADDR_LENGTH 20
186 BYTE Address
[DNS_ATMA_MAX_ADDR_LENGTH
];
187 } DNS_ATMA_DATA
, *PDNS_ATMA_DATA
;
193 } DNS_KEY_DATA
, *PDNS_KEY_DATA
;
202 } DNS_LOC_DATA
, *PDNS_LOC_DATA
;
205 LPSTR pNameErrorsMailbox
;
206 } DNS_MINFO_DATAA
, *PDNS_MINFO_DATAA
;
209 LPWSTR pNameErrorsMailbox
;
210 } DNS_MINFO_DATAW
, *PDNS_MINFO_DATAW
;
215 } DNS_MX_DATAA
, *PDNS_MX_DATAA
;
217 LPWSTR pNameExchange
;
220 } DNS_MX_DATAW
, *PDNS_MX_DATAW
;
224 } DNS_NULL_DATA
, *PDNS_NULL_DATA
;
229 } DNS_NXT_DATAA
, *PDNS_NXT_DATAA
;
234 } DNS_NXT_DATAW
, *PDNS_NXT_DATAW
;
237 } DNS_PTR_DATAA
, *PDNS_PTR_DATAA
;
240 } DNS_PTR_DATAW
, *PDNS_PTR_DATAW
;
252 } DNS_SIG_DATAA
, *PDNS_SIG_DATAA
;
264 } DNS_SIG_DATAW
, *PDNS_SIG_DATAW
;
266 LPSTR pNamePrimaryServer
;
267 LPSTR pNameAdministrator
;
273 } DNS_SOA_DATAA
, *PDNS_SOA_DATAA
;
275 LPWSTR pNamePrimaryServer
;
276 LPWSTR pNameAdministrator
;
282 } DNS_SOA_DATAW
, *PDNS_SOA_DATAW
;
289 } DNS_SRV_DATAA
, *PDNS_SRV_DATAA
;
296 } DNS_SRV_DATAW
, *PDNS_SRV_DATAW
;
299 LPSTR pStringArray
[1];
300 } DNS_TXT_DATAA
, *PDNS_TXT_DATAA
;
303 LPWSTR pStringArray
[1];
304 } DNS_TXT_DATAW
, *PDNS_TXT_DATAW
;
306 LPSTR pNameAlgorithm
;
307 PBYTE pAlgorithmPacket
;
316 UCHAR cAlgNameLength
;
317 BOOL bPacketPointers
;
318 } DNS_TKEY_DATAA
, *PDNS_TKEY_DATAA
;
320 LPWSTR pNameAlgorithm
;
321 PBYTE pAlgorithmPacket
;
330 UCHAR cAlgNameLength
;
331 BOOL bPacketPointers
;
332 } DNS_TKEY_DATAW
, *PDNS_TKEY_DATAW
;
334 LPSTR pNameAlgorithm
;
335 PBYTE pAlgorithmPacket
;
338 LONGLONG i64CreateTime
;
344 UCHAR cAlgNameLength
;
345 BOOL bPacketPointers
;
346 } DNS_TSIG_DATAA
, *PDNS_TSIG_DATAA
;
348 LPWSTR pNameAlgorithm
;
349 PBYTE pAlgorithmPacket
;
352 LONGLONG i64CreateTime
;
358 UCHAR cAlgNameLength
;
359 BOOL bPacketPointers
;
360 } DNS_TSIG_DATAW
, *PDNS_TSIG_DATAW
;
363 DWORD dwLookupTimeout
;
364 DWORD dwCacheTimeout
;
365 DWORD cWinsServerCount
;
366 IP4_ADDRESS WinsServers
[1];
367 } DNS_WINS_DATA
, *PDNS_WINS_DATA
;
370 DWORD dwLookupTimeout
;
371 DWORD dwCacheTimeout
;
372 LPSTR pNameResultDomain
;
373 } DNS_WINSR_DATAA
, *PDNS_WINSR_DATAA
;
376 DWORD dwLookupTimeout
;
377 DWORD dwCacheTimeout
;
378 LPWSTR pNameResultDomain
;
379 } DNS_WINSR_DATAW
, *PDNS_WINSR_DATAW
;
380 typedef struct _DNS_WIRE_QUESTION
{
383 } DNS_WIRE_QUESTION
, *PDNS_WIRE_QUESTION
;
384 typedef struct _DNS_WIRE_RECORD
{
389 } DNS_WIRE_RECORD
, *PDNS_WIRE_RECORD
;
391 IP4_ADDRESS IpAddress
;
394 } DNS_WKS_DATA
, *PDNS_WKS_DATA
;
395 typedef struct _DnsRecordA
{
396 struct _DnsRecordA
* pNext
;
408 DNS_SOA_DATAA SOA
, Soa
;
409 DNS_PTR_DATAA PTR
, Ptr
, NS
, Ns
, CNAME
, Cname
, MB
, Mb
,
410 MD
, Md
, MF
, Mf
, MG
, Mg
, MR
, Mr
;
411 DNS_MINFO_DATAA MINFO
, Minfo
, RP
, Rp
;
412 DNS_MX_DATAA MX
, Mx
, AFSDB
, Afsdb
, RT
, Rt
;
413 DNS_TXT_DATAA HINFO
, Hinfo
, ISDN
, Isdn
, TXT
, Txt
, X25
;
415 DNS_WKS_DATA WKS
, Wks
;
417 DNS_KEY_DATA KEY
, Key
;
418 DNS_SIG_DATAA SIG
, Sig
;
419 DNS_ATMA_DATA ATMA
, Atma
;
420 DNS_NXT_DATAA NXT
, Nxt
;
421 DNS_SRV_DATAA SRV
, Srv
;
422 DNS_TKEY_DATAA TKEY
, Tkey
;
423 DNS_TSIG_DATAA TSIG
, Tsig
;
424 DNS_WINS_DATA WINS
, Wins
;
425 DNS_WINSR_DATAA WINSR
, WinsR
, NBSTAT
, Nbstat
;
427 } DNS_RECORDA
, *PDNS_RECORDA
;
428 typedef struct _DnsRecordW
{
429 struct _DnsRecordW
* pNext
;
441 DNS_SOA_DATAW SOA
, Soa
;
442 DNS_PTR_DATAW PTR
, Ptr
, NS
, Ns
, CNAME
, Cname
, MB
, Mb
,
443 MD
, Md
, MF
, Mf
, MG
, Mg
, MR
, Mr
;
444 DNS_MINFO_DATAW MINFO
, Minfo
, RP
, Rp
;
445 DNS_MX_DATAW MX
, Mx
, AFSDB
, Afsdb
, RT
, Rt
;
446 DNS_TXT_DATAW HINFO
, Hinfo
, ISDN
, Isdn
, TXT
, Txt
, X25
;
448 DNS_WKS_DATA WKS
, Wks
;
450 DNS_KEY_DATA KEY
, Key
;
451 DNS_SIG_DATAW SIG
, Sig
;
452 DNS_ATMA_DATA ATMA
, Atma
;
453 DNS_NXT_DATAW NXT
, Nxt
;
454 DNS_SRV_DATAW SRV
, Srv
;
455 DNS_TKEY_DATAW TKEY
, Tkey
;
456 DNS_TSIG_DATAW TSIG
, Tsig
;
457 DNS_WINS_DATA WINS
, Wins
;
458 DNS_WINSR_DATAW WINSR
, WinsR
, NBSTAT
, Nbstat
;
460 } DNS_RECORDW
, *PDNS_RECORDW
;
463 #define DNS_RECORD DNS_RECORDW
464 #define PDNS_RECORD PDNS_RECORDW
466 #define DNS_RECORD DNS_RECORDA
467 #define PDNS_RECORD PDNS_RECORDA
470 typedef struct _DnsRRSet
{
471 PDNS_RECORD pFirstRR
;
473 } DNS_RRSET
, *PDNS_RRSET
;
475 DNS_STATUS WINAPI
DnsAcquireContextHandle_A(DWORD
,PVOID
,HANDLE
*);
476 DNS_STATUS WINAPI
DnsAcquireContextHandle_W(DWORD
,PVOID
,HANDLE
*);
477 DNS_STATUS WINAPI
DnsExtractRecordsFromMessage_W(PDNS_MESSAGE_BUFFER
,WORD
,PDNS_RECORD
*);
478 DNS_STATUS WINAPI
DnsExtractRecordsFromMessage_UTF8(PDNS_MESSAGE_BUFFER
,WORD
,PDNS_RECORD
*);
479 DNS_STATUS WINAPI
DnsModifyRecordsInSet_A(PDNS_RECORD
,PDNS_RECORD
,DWORD
,HANDLE
,PIP4_ARRAY
,PVOID
);
480 DNS_STATUS WINAPI
DnsModifyRecordsInSet_W(PDNS_RECORD
,PDNS_RECORD
,DWORD
,HANDLE
,PIP4_ARRAY
,PVOID
);
481 DNS_STATUS WINAPI
DnsModifyRecordsInSet_UTF8(PDNS_RECORD
,PDNS_RECORD
,DWORD
,HANDLE
,PIP4_ARRAY
,PVOID
);
482 BOOL WINAPI
DnsNameCompare_A(LPSTR
,LPSTR
);
483 BOOL WINAPI
DnsNameCompare_W(LPWSTR
,LPWSTR
);
484 DNS_STATUS WINAPI
DnsQuery_A(PCSTR
,WORD
,DWORD
,PIP4_ARRAY
,PDNS_RECORD
*,PVOID
*);
485 DNS_STATUS WINAPI
DnsQuery_W(PCWSTR
,WORD
,DWORD
,PIP4_ARRAY
,PDNS_RECORD
*,PVOID
*);
486 DNS_STATUS WINAPI
DnsQuery_UTF8(PCSTR
,WORD
,DWORD
,PIP4_ARRAY
,PDNS_RECORD
*,PVOID
*);
487 DNS_STATUS WINAPI
DnsQueryConfig(DNS_CONFIG_TYPE
,DWORD
,PWSTR
,PVOID
,PVOID
,PDWORD
);
488 BOOL WINAPI
DnsRecordCompare(PDNS_RECORD
,PDNS_RECORD
);
489 PDNS_RECORD WINAPI
DnsRecordCopyEx(PDNS_RECORD
,DNS_CHARSET
,DNS_CHARSET
);
490 void WINAPI
DnsRecordListFree(PDNS_RECORD
,DNS_FREE_TYPE
);
491 BOOL WINAPI
DnsRecordSetCompare(PDNS_RECORD
,PDNS_RECORD
,PDNS_RECORD
*,PDNS_RECORD
*);
492 PDNS_RECORD WINAPI
DnsRecordSetCopyEx(PDNS_RECORD
,DNS_CHARSET
,DNS_CHARSET
);
493 PDNS_RECORD WINAPI
DnsRecordSetDetach(PDNS_RECORD
);
494 void WINAPI
DnsReleaseContextHandle(HANDLE
);
495 DNS_STATUS WINAPI
DnsReplaceRecordSetA(PDNS_RECORD
,DWORD
,HANDLE
,PIP4_ARRAY
,PVOID
);
496 DNS_STATUS WINAPI
DnsReplaceRecordSetW(PDNS_RECORD
,DWORD
,HANDLE
,PIP4_ARRAY
,PVOID
);
497 DNS_STATUS WINAPI
DnsReplaceRecordSetUTF8(PDNS_RECORD
,DWORD
,HANDLE
,PIP4_ARRAY
,PVOID
);
498 DNS_STATUS WINAPI
DnsValidateName_A(LPCSTR
,DNS_NAME_FORMAT
);
499 DNS_STATUS WINAPI
DnsValidateName_W(LPCWSTR
, DNS_NAME_FORMAT
);
500 DNS_STATUS WINAPI
DnsValidateName_UTF8(LPCSTR
,DNS_NAME_FORMAT
);
501 BOOL WINAPI
DnsWriteQuestionToBuffer_W(PDNS_MESSAGE_BUFFER
,LPDWORD
,LPWSTR
,WORD
,WORD
,BOOL
);
502 BOOL WINAPI
DnsWriteQuestionToBuffer_UTF8(PDNS_MESSAGE_BUFFER
,LPDWORD
,LPSTR
,WORD
,WORD
,BOOL
);
505 #define DNS_MINFO_DATA DNS_MINFO_DATAW
506 #define PDNS_MINFO_DATA PDNS_MINFO_DATAW
507 #define DNS_MX_DATA DNS_MX_DATAW
508 #define PDNS_MX_DATA PDNS_MX_DATAW
509 #define DNS_NXT_DATA DNS_NXT_DATAW
510 #define PDNS_NXT_DATA PDNS_NXT_DATAW
511 #define DNS_PTR_DATA DNS_PTR_DATAW
512 #define PDNS_PTR_DATA PDNS_PTR_DATAW
513 #define DNS_SIG_DATA DNS_SIG_DATAW
514 #define PDNS_SIG_DATA PDNS_SIG_DATAW
515 #define DNS_SOA_DATA DNS_SOA_DATAW
516 #define PDNS_SOA_DATA PDNS_SOA_DATAW
517 #define DNS_TXT_DATA DNS_TXT_DATAW
518 #define PDNS_TXT_DATA PDNS_TXT_DATAW
519 #define DNS_TKEY_DATA DNS_TKEY_DATAW
520 #define PDNS_TKEY_DATA PDNS_TKEY_DATAW
521 #define DNS_WINSR_DATA DNS_WINSR_DATAW
522 #define PDNS_WINSR_DATA PDNS_WINSR_DATAW
523 #define DnsAcquireContextHandle DnsAcquireContextHandle_W
524 #define DnsModifyRecordsInSet DnsModifyRecordsInSet_W
525 #define DnsNameCompare DnsNameCompare_W
526 #define DnsQuery DnsQuery_W
527 #define DnsReplaceRecordSet DnsReplaceRecordSetW
528 #define DnsValidateName DnsValidateName_W
530 #define DNS_MINFO_DATA DNS_MINFO_DATAA
531 #define PDNS_MINFO_DATA PDNS_MINFO_DATAA
532 #define DNS_MX_DATA DNS_MX_DATAA
533 #define PDNS_MX_DATA PDNS_MX_DATAA
534 #define DNS_NXT_DATA DNS_NXT_DATAA
535 #define PDNS_NXT_DATA PDNS_NXT_DATAA
536 #define DNS_PTR_DATA DNS_PTR_DATAA
537 #define PDNS_PTR_DATA PDNS_PTR_DATAA
538 #define DNS_SIG_DATA DNS_SIG_DATAA
539 #define PDNS_SIG_DATA PDNS_SIG_DATAA
540 #define DNS_SOA_DATA DNS_SOA_DATAA
541 #define PDNS_SOA_DATA PDNS_SOA_DATAA
542 #define DNS_TXT_DATA DNS_TXT_DATAA
543 #define PDNS_TXT_DATA PDNS_TXT_DATAA
544 #define DNS_TKEY_DATA DNS_TKEY_DATAA
545 #define PDNS_TKEY_DATA PDNS_TKEY_DATAA
546 #define DNS_WINSR_DATA DNS_WINSR_DATAA
547 #define PDNS_WINSR_DATA PDNS_WINSR_DATAA
548 #define DnsAcquireContextHandle DnsAcquireContextHandle_A
549 #define DnsModifyRecordsInSet DnsModifyRecordsInSet_A
550 #define DnsNameCompare DnsNameCompare_A
551 #define DnsQuery DnsQuery_A
552 #define DnsReplaceRecordSet DnsReplaceRecordSetA
553 #define DnsValidateName DnsValidateName_A
556 #endif /* RC_INVOKED */
562 #endif /* _WINDNS_H */