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
;
56 typedef enum _DNS_CHARSET
65 DnsConfigPrimaryDomainName_W
,
66 DnsConfigPrimaryDomainName_A
,
67 DnsConfigPrimaryDomainName_UTF8
,
68 DnsConfigAdapterDomainName_W
,
69 DnsConfigAdapterDomainName_A
,
70 DnsConfigAdapterDomainName_UTF8
,
71 DnsConfigDnsServerList
,
74 DnsConfigPrimaryHostNameRegistrationEnabled
,
75 DnsConfigAdapterHostNameRegistrationEnabled
,
76 DnsConfigAddressRegistrationMaxCount
,
79 DnsConfigHostName_UTF8
,
80 DnsConfigFullHostName_W
,
81 DnsConfigFullHostName_A
,
82 DnsConfigFullHostName_UTF8
88 DnsFreeParsedMessageFields
90 typedef enum _DNS_NAME_FORMAT
106 typedef struct _IP4_ARRAY
{
108 IP4_ADDRESS AddrArray
[1];
109 } IP4_ARRAY
, *PIP4_ARRAY
;
112 } IP6_ADDRESS
, *PIP6_ADDRESS
, DNS_IP6_ADDRESS
, *PDNS_IP6_ADDRESS
;
113 typedef struct _DNS_HEADER
{
115 BYTE RecursionDesired
;
122 BYTE RecursionAvailable
;
125 WORD NameServerCount
;
126 WORD AdditionalCount
;
127 } DNS_HEADER
, *PDNS_HEADER
;
128 typedef struct _DNS_MESSAGE_BUFFER
{
129 DNS_HEADER MessageHead
;
131 } DNS_MESSAGE_BUFFER
, *PDNS_MESSAGE_BUFFER
;
132 typedef struct _DnsRecordFlags
{
140 IP4_ADDRESS IpAddress
;
141 } DNS_A_DATA
, *PDNS_A_DATA
;
143 DNS_IP6_ADDRESS Ip6Address
;
144 } DNS_AAAA_DATA
, *PDNS_AAAA_DATA
;
145 #define DNS_ATMA_MAX_ADDR_LENGTH 20
148 BYTE Address
[DNS_ATMA_MAX_ADDR_LENGTH
];
149 } DNS_ATMA_DATA
, *PDNS_ATMA_DATA
;
155 } DNS_KEY_DATA
, *PDNS_KEY_DATA
;
164 } DNS_LOC_DATA
, *PDNS_LOC_DATA
;
167 LPSTR pNameErrorsMailbox
;
168 } DNS_MINFO_DATAA
, *PDNS_MINFO_DATAA
;
171 LPWSTR pNameErrorsMailbox
;
172 } DNS_MINFO_DATAW
, *PDNS_MINFO_DATAW
;
177 } DNS_MX_DATAA
, *PDNS_MX_DATAA
;
179 LPWSTR pNameExchange
;
182 } DNS_MX_DATAW
, *PDNS_MX_DATAW
;
186 } DNS_NULL_DATA
, *PDNS_NULL_DATA
;
191 } DNS_NXT_DATAA
, *PDNS_NXT_DATAA
;
196 } DNS_NXT_DATAW
, *PDNS_NXT_DATAW
;
199 } DNS_PTR_DATAA
, *PDNS_PTR_DATAA
;
202 } DNS_PTR_DATAW
, *PDNS_PTR_DATAW
;
214 } DNS_SIG_DATAA
, *PDNS_SIG_DATAA
;
226 } DNS_SIG_DATAW
, *PDNS_SIG_DATAW
;
228 LPSTR pNamePrimaryServer
;
229 LPSTR pNameAdministrator
;
235 } DNS_SOA_DATAA
, *PDNS_SOA_DATAA
;
237 LPWSTR pNamePrimaryServer
;
238 LPWSTR pNameAdministrator
;
244 } DNS_SOA_DATAW
, *PDNS_SOA_DATAW
;
251 } DNS_SRV_DATAA
, *PDNS_SRV_DATAA
;
258 } DNS_SRV_DATAW
, *PDNS_SRV_DATAW
;
261 LPSTR pStringArray
[1];
262 } DNS_TXT_DATAA
, *PDNS_TXT_DATAA
;
265 LPWSTR pStringArray
[1];
266 } DNS_TXT_DATAW
, *PDNS_TXT_DATAW
;
268 LPSTR pNameAlgorithm
;
269 PBYTE pAlgorithmPacket
;
278 UCHAR cAlgNameLength
;
279 BOOL bPacketPointers
;
280 } DNS_TKEY_DATAA
, *PDNS_TKEY_DATAA
;
282 LPWSTR pNameAlgorithm
;
283 PBYTE pAlgorithmPacket
;
292 UCHAR cAlgNameLength
;
293 BOOL bPacketPointers
;
294 } DNS_TKEY_DATAW
, *PDNS_TKEY_DATAW
;
296 LPSTR pNameAlgorithm
;
297 PBYTE pAlgorithmPacket
;
300 LONGLONG i64CreateTime
;
306 UCHAR cAlgNameLength
;
307 BOOL bPacketPointers
;
308 } DNS_TSIG_DATAA
, *PDNS_TSIG_DATAA
;
310 LPWSTR pNameAlgorithm
;
311 PBYTE pAlgorithmPacket
;
314 LONGLONG i64CreateTime
;
320 UCHAR cAlgNameLength
;
321 BOOL bPacketPointers
;
322 } DNS_TSIG_DATAW
, *PDNS_TSIG_DATAW
;
325 DWORD dwLookupTimeout
;
326 DWORD dwCacheTimeout
;
327 DWORD cWinsServerCount
;
328 IP4_ADDRESS WinsServers
[1];
329 } DNS_WINS_DATA
, *PDNS_WINS_DATA
;
332 DWORD dwLookupTimeout
;
333 DWORD dwCacheTimeout
;
334 LPSTR pNameResultDomain
;
335 } DNS_WINSR_DATAA
, *PDNS_WINSR_DATAA
;
338 DWORD dwLookupTimeout
;
339 DWORD dwCacheTimeout
;
340 LPWSTR pNameResultDomain
;
341 } DNS_WINSR_DATAW
, *PDNS_WINSR_DATAW
;
342 typedef struct _DNS_WIRE_QUESTION
{
345 } DNS_WIRE_QUESTION
, *PDNS_WIRE_QUESTION
;
346 typedef struct _DNS_WIRE_RECORD
{
351 } DNS_WIRE_RECORD
, *PDNS_WIRE_RECORD
;
353 IP4_ADDRESS IpAddress
;
356 } DNS_WKS_DATA
, *PDNS_WKS_DATA
;
357 typedef struct _DnsRecordA
{
358 struct _DnsRecordA
* pNext
;
370 DNS_SOA_DATAA SOA
, Soa
;
371 DNS_PTR_DATAA PTR
, Ptr
, NS
, Ns
, CNAME
, Cname
, MB
, Mb
,
372 MD
, Md
, MF
, Mf
, MG
, Mg
, MR
, Mr
;
373 DNS_MINFO_DATAA MINFO
, Minfo
, RP
, Rp
;
374 DNS_MX_DATAA MX
, Mx
, AFSDB
, Afsdb
, RT
, Rt
;
375 DNS_TXT_DATAA HINFO
, Hinfo
, ISDN
, Isdn
, TXT
, Txt
, X25
;
377 DNS_WKS_DATA WKS
, Wks
;
379 DNS_KEY_DATA KEY
, Key
;
380 DNS_SIG_DATAA SIG
, Sig
;
381 DNS_ATMA_DATA ATMA
, Atma
;
382 DNS_NXT_DATAA NXT
, Nxt
;
383 DNS_SRV_DATAA SRV
, Srv
;
384 DNS_TKEY_DATAA TKEY
, Tkey
;
385 DNS_TSIG_DATAA TSIG
, Tsig
;
386 DNS_WINS_DATA WINS
, Wins
;
387 DNS_WINSR_DATAA WINSR
, WinsR
, NBSTAT
, Nbstat
;
389 } DNS_RECORDA
, *PDNS_RECORDA
;
390 typedef struct _DnsRecordW
{
391 struct _DnsRecordW
* pNext
;
403 DNS_SOA_DATAW SOA
, Soa
;
404 DNS_PTR_DATAW PTR
, Ptr
, NS
, Ns
, CNAME
, Cname
, MB
, Mb
,
405 MD
, Md
, MF
, Mf
, MG
, Mg
, MR
, Mr
;
406 DNS_MINFO_DATAW MINFO
, Minfo
, RP
, Rp
;
407 DNS_MX_DATAW MX
, Mx
, AFSDB
, Afsdb
, RT
, Rt
;
408 DNS_TXT_DATAW HINFO
, Hinfo
, ISDN
, Isdn
, TXT
, Txt
, X25
;
410 DNS_WKS_DATA WKS
, Wks
;
412 DNS_KEY_DATA KEY
, Key
;
413 DNS_SIG_DATAW SIG
, Sig
;
414 DNS_ATMA_DATA ATMA
, Atma
;
415 DNS_NXT_DATAW NXT
, Nxt
;
416 DNS_SRV_DATAW SRV
, Srv
;
417 DNS_TKEY_DATAW TKEY
, Tkey
;
418 DNS_TSIG_DATAW TSIG
, Tsig
;
419 DNS_WINS_DATA WINS
, Wins
;
420 DNS_WINSR_DATAW WINSR
, WinsR
, NBSTAT
, Nbstat
;
422 } DNS_RECORDW
, *PDNS_RECORDW
;
425 #define DNS_RECORD DNS_RECORDW
426 #define PDNS_RECORD PDNS_RECORDW
428 #define DNS_RECORD DNS_RECORDA
429 #define PDNS_RECORD PDNS_RECORDA
432 typedef struct _DnsRRSet
{
433 PDNS_RECORD pFirstRR
;
435 } DNS_RRSET
, *PDNS_RRSET
;
437 DNS_STATUS WINAPI
DnsAcquireContextHandle_A(DWORD
,PVOID
,HANDLE
*);
438 DNS_STATUS WINAPI
DnsAcquireContextHandle_W(DWORD
,PVOID
,HANDLE
*);
439 DNS_STATUS WINAPI
DnsExtractRecordsFromMessage_W(PDNS_MESSAGE_BUFFER
,WORD
,PDNS_RECORD
*);
440 DNS_STATUS WINAPI
DnsExtractRecordsFromMessage_UTF8(PDNS_MESSAGE_BUFFER
,WORD
,PDNS_RECORD
*);
441 DNS_STATUS WINAPI
DnsModifyRecordsInSet_A(PDNS_RECORD
,PDNS_RECORD
,DWORD
,HANDLE
,PIP4_ARRAY
,PVOID
);
442 DNS_STATUS WINAPI
DnsModifyRecordsInSet_W(PDNS_RECORD
,PDNS_RECORD
,DWORD
,HANDLE
,PIP4_ARRAY
,PVOID
);
443 DNS_STATUS WINAPI
DnsModifyRecordsInSet_UTF8(PDNS_RECORD
,PDNS_RECORD
,DWORD
,HANDLE
,PIP4_ARRAY
,PVOID
);
444 BOOL WINAPI
DnsNameCompare_A(LPSTR
,LPSTR
);
445 BOOL WINAPI
DnsNameCompare_W(LPWSTR
,LPWSTR
);
446 DNS_STATUS WINAPI
DnsQuery_A(PCSTR
,WORD
,DWORD
,PIP4_ARRAY
,PDNS_RECORD
*,PVOID
*);
447 DNS_STATUS WINAPI
DnsQuery_W(PCWSTR
,WORD
,DWORD
,PIP4_ARRAY
,PDNS_RECORD
*,PVOID
*);
448 DNS_STATUS WINAPI
DnsQuery_UTF8(PCSTR
,WORD
,DWORD
,PIP4_ARRAY
,PDNS_RECORD
*,PVOID
*);
449 DNS_STATUS WINAPI
DnsQueryConfig(DNS_CONFIG_TYPE
,DWORD
,PWSTR
,PVOID
,PVOID
,PDWORD
);
450 BOOL WINAPI
DnsRecordCompare(PDNS_RECORD
,PDNS_RECORD
);
451 PDNS_RECORD WINAPI
DnsRecordCopyEx(PDNS_RECORD
,DNS_CHARSET
,DNS_CHARSET
);
452 void WINAPI
DnsRecordListFree(PDNS_RECORD
,DNS_FREE_TYPE
);
453 BOOL WINAPI
DnsRecordSetCompare(PDNS_RECORD
,PDNS_RECORD
,PDNS_RECORD
*,PDNS_RECORD
*);
454 PDNS_RECORD WINAPI
DnsRecordSetCopyEx(PDNS_RECORD
,DNS_CHARSET
,DNS_CHARSET
);
455 PDNS_RECORD WINAPI
DnsRecordSetDetach(PDNS_RECORD
);
456 void WINAPI
DnsReleaseContextHandle(HANDLE
);
457 DNS_STATUS WINAPI
DnsReplaceRecordSetA(PDNS_RECORD
,DWORD
,HANDLE
,PIP4_ARRAY
,PVOID
);
458 DNS_STATUS WINAPI
DnsReplaceRecordSetW(PDNS_RECORD
,DWORD
,HANDLE
,PIP4_ARRAY
,PVOID
);
459 DNS_STATUS WINAPI
DnsReplaceRecordSetUTF8(PDNS_RECORD
,DWORD
,HANDLE
,PIP4_ARRAY
,PVOID
);
460 DNS_STATUS WINAPI
DnsValidateName_A(LPCSTR
,DNS_NAME_FORMAT
);
461 DNS_STATUS WINAPI
DnsValidateName_W(LPCWSTR
, DNS_NAME_FORMAT
);
462 DNS_STATUS WINAPI
DnsValidateName_UTF8(LPCSTR
,DNS_NAME_FORMAT
);
463 BOOL WINAPI
DnsWriteQuestionToBuffer_W(PDNS_MESSAGE_BUFFER
,LPDWORD
,LPWSTR
,WORD
,WORD
,BOOL
);
464 BOOL WINAPI
DnsWriteQuestionToBuffer_UTF8(PDNS_MESSAGE_BUFFER
,LPDWORD
,LPSTR
,WORD
,WORD
,BOOL
);
467 #define DNS_MINFO_DATA DNS_MINFO_DATAW
468 #define PDNS_MINFO_DATA PDNS_MINFO_DATAW
469 #define DNS_MX_DATA DNS_MX_DATAW
470 #define PDNS_MX_DATA PDNS_MX_DATAW
471 #define DNS_NXT_DATA DNS_NXT_DATAW
472 #define PDNS_NXT_DATA PDNS_NXT_DATAW
473 #define DNS_PTR_DATA DNS_PTR_DATAW
474 #define PDNS_PTR_DATA PDNS_PTR_DATAW
475 #define DNS_SIG_DATA DNS_SIG_DATAW
476 #define PDNS_SIG_DATA PDNS_SIG_DATAW
477 #define DNS_SOA_DATA DNS_SOA_DATAW
478 #define PDNS_SOA_DATA PDNS_SOA_DATAW
479 #define DNS_TXT_DATA DNS_TXT_DATAW
480 #define PDNS_TXT_DATA PDNS_TXT_DATAW
481 #define DNS_TKEY_DATA DNS_TKEY_DATAW
482 #define PDNS_TKEY_DATA PDNS_TKEY_DATAW
483 #define DNS_WINSR_DATA DNS_WINSR_DATAW
484 #define PDNS_WINSR_DATA PDNS_WINSR_DATAW
485 #define DnsAcquireContextHandle DnsAcquireContextHandle_W
486 #define DnsModifyRecordsInSet DnsModifyRecordsInSet_W
487 #define DnsNameCompare DnsNameCompare_W
488 #define DnsQuery DnsQuery_W
489 #define DnsReplaceRecordSet DnsReplaceRecordSetW
490 #define DnsValidateName DnsValidateName_W
492 #define DNS_MINFO_DATA DNS_MINFO_DATAA
493 #define PDNS_MINFO_DATA PDNS_MINFO_DATAA
494 #define DNS_MX_DATA DNS_MX_DATAA
495 #define PDNS_MX_DATA PDNS_MX_DATAA
496 #define DNS_NXT_DATA DNS_NXT_DATAA
497 #define PDNS_NXT_DATA PDNS_NXT_DATAA
498 #define DNS_PTR_DATA DNS_PTR_DATAA
499 #define PDNS_PTR_DATA PDNS_PTR_DATAA
500 #define DNS_SIG_DATA DNS_SIG_DATAA
501 #define PDNS_SIG_DATA PDNS_SIG_DATAA
502 #define DNS_SOA_DATA DNS_SOA_DATAA
503 #define PDNS_SOA_DATA PDNS_SOA_DATAA
504 #define DNS_TXT_DATA DNS_TXT_DATAA
505 #define PDNS_TXT_DATA PDNS_TXT_DATAA
506 #define DNS_TKEY_DATA DNS_TKEY_DATAA
507 #define PDNS_TKEY_DATA PDNS_TKEY_DATAA
508 #define DNS_WINSR_DATA DNS_WINSR_DATAA
509 #define PDNS_WINSR_DATA PDNS_WINSR_DATAA
510 #define DnsAcquireContextHandle DnsAcquireContextHandle_A
511 #define DnsModifyRecordsInSet DnsModifyRecordsInSet_A
512 #define DnsNameCompare DnsNameCompare_A
513 #define DnsQuery DnsQuery_A
514 #define DnsReplaceRecordSet DnsReplaceRecordSetA
515 #define DnsValidateName DnsValidateName_A
518 #endif /* RC_INVOKED */
524 #endif /* _WINDNS_H */