8 #define DNS_QUERY_STANDARD 0x0
9 #define DNS_QUERY_ACCEPT_TRUNCATED_RESPONSE 0x1
10 #define DNS_QUERY_USE_TCP_ONLY 0x2
11 #define DNS_QUERY_NO_RECURSION 0x4
12 #define DNS_QUERY_BYPASS_CACHE 0x8
13 #define DNS_QUERY_NO_WIRE_QUERY 0x10
14 #define DNS_QUERY_NO_LOCAL_NAME 0x20
15 #define DNS_QUERY_NO_HOSTS_FILE 0x40
16 #define DNS_QUERY_NO_NETBT 0x80
17 #define DNS_QUERY_TREAT_AS_FQDN 0x1000
18 #define DNS_QUERY_WIRE_ONLY 0x100
19 #define DNS_QUERY_RETURN_MESSAGE 0x200
20 #define DNS_QUERY_DONT_RESET_TTL_VALUES 0x100000
21 #define DNS_QUERY_RESERVED 0xff000000
23 #define DNS_UPDATE_SECURITY_USE_DEFAULT 0x0
24 #define DNS_UPDATE_SECURITY_OFF 0x10
25 #define DNS_UPDATE_SECURITY_ON 0x20
26 #define DNS_UPDATE_SECURITY_ONLY 0x100
27 #define DNS_UPDATE_CACHE_SECURITY_CONTEXT 0x200
28 #define DNS_UPDATE_TEST_USE_LOCAL_SYS_ACCT 0x400
29 #define DNS_UPDATE_FORCE_SECURITY_NEGO 0x800
30 #define DNS_UPDATE_RESERVED 0xffff0000
32 #define DNS_CONFIG_FLAG_ALLOC TRUE
35 typedef DWORD IP4_ADDRESS
;
36 typedef DWORD DNS_STATUS
;
91 DNS_TYPE_ANY
=DNS_TYPE_ALL
93 typedef enum _DNS_CHARSET
102 DnsConfigPrimaryDomainName_W
,
103 DnsConfigPrimaryDomainName_A
,
104 DnsConfigPrimaryDomainName_UTF8
,
105 DnsConfigAdapterDomainName_W
,
106 DnsConfigAdapterDomainName_A
,
107 DnsConfigAdapterDomainName_UTF8
,
108 DnsConfigDnsServerList
,
110 DnsConfigAdapterInfo
,
111 DnsConfigPrimaryHostNameRegistrationEnabled
,
112 DnsConfigAdapterHostNameRegistrationEnabled
,
113 DnsConfigAddressRegistrationMaxCount
,
116 DnsConfigHostName_UTF8
,
117 DnsConfigFullHostName_W
,
118 DnsConfigFullHostName_A
,
119 DnsConfigFullHostName_UTF8
125 DnsFreeParsedMessageFields
127 typedef enum _DNS_NAME_FORMAT
132 DnsNameHostnameLabel
,
143 typedef struct _IP4_ARRAY
{
145 IP4_ADDRESS AddrArray
[1];
146 } IP4_ARRAY
, *PIP4_ARRAY
;
149 } IP6_ADDRESS
, *PIP6_ADDRESS
, DNS_IP6_ADDRESS
, *PDNS_IP6_ADDRESS
;
150 typedef struct _DNS_HEADER
{
152 BYTE RecursionDesired
;
159 BYTE RecursionAvailable
;
162 WORD NameServerCount
;
163 WORD AdditionalCount
;
164 } DNS_HEADER
, *PDNS_HEADER
;
165 typedef struct _DNS_MESSAGE_BUFFER
{
166 DNS_HEADER MessageHead
;
168 } DNS_MESSAGE_BUFFER
, *PDNS_MESSAGE_BUFFER
;
169 typedef struct _DnsRecordFlags
{
176 #define DNSREC_QUESTION 0
177 #define DNSREC_ANSWER 1
178 #define DNSREC_AUTHORITY 2
179 #define DNSREC_ADDITIONAL 3
181 IP4_ADDRESS IpAddress
;
182 } DNS_A_DATA
, *PDNS_A_DATA
;
184 DNS_IP6_ADDRESS Ip6Address
;
185 } DNS_AAAA_DATA
, *PDNS_AAAA_DATA
;
186 #define DNS_ATMA_MAX_ADDR_LENGTH 20
189 BYTE Address
[DNS_ATMA_MAX_ADDR_LENGTH
];
190 } DNS_ATMA_DATA
, *PDNS_ATMA_DATA
;
196 } DNS_KEY_DATA
, *PDNS_KEY_DATA
;
205 } DNS_LOC_DATA
, *PDNS_LOC_DATA
;
208 LPSTR pNameErrorsMailbox
;
209 } DNS_MINFO_DATAA
, *PDNS_MINFO_DATAA
;
212 LPWSTR pNameErrorsMailbox
;
213 } DNS_MINFO_DATAW
, *PDNS_MINFO_DATAW
;
218 } DNS_MX_DATAA
, *PDNS_MX_DATAA
;
220 LPWSTR pNameExchange
;
223 } DNS_MX_DATAW
, *PDNS_MX_DATAW
;
227 } DNS_NULL_DATA
, *PDNS_NULL_DATA
;
232 } DNS_NXT_DATAA
, *PDNS_NXT_DATAA
;
237 } DNS_NXT_DATAW
, *PDNS_NXT_DATAW
;
240 } DNS_PTR_DATAA
, *PDNS_PTR_DATAA
;
243 } DNS_PTR_DATAW
, *PDNS_PTR_DATAW
;
255 } DNS_SIG_DATAA
, *PDNS_SIG_DATAA
;
267 } DNS_SIG_DATAW
, *PDNS_SIG_DATAW
;
269 LPSTR pNamePrimaryServer
;
270 LPSTR pNameAdministrator
;
276 } DNS_SOA_DATAA
, *PDNS_SOA_DATAA
;
278 LPWSTR pNamePrimaryServer
;
279 LPWSTR pNameAdministrator
;
285 } DNS_SOA_DATAW
, *PDNS_SOA_DATAW
;
292 } DNS_SRV_DATAA
, *PDNS_SRV_DATAA
;
299 } DNS_SRV_DATAW
, *PDNS_SRV_DATAW
;
302 LPSTR pStringArray
[1];
303 } DNS_TXT_DATAA
, *PDNS_TXT_DATAA
;
306 LPWSTR pStringArray
[1];
307 } DNS_TXT_DATAW
, *PDNS_TXT_DATAW
;
309 LPSTR pNameAlgorithm
;
310 PBYTE pAlgorithmPacket
;
319 UCHAR cAlgNameLength
;
320 BOOL bPacketPointers
;
321 } DNS_TKEY_DATAA
, *PDNS_TKEY_DATAA
;
323 LPWSTR pNameAlgorithm
;
324 PBYTE pAlgorithmPacket
;
333 UCHAR cAlgNameLength
;
334 BOOL bPacketPointers
;
335 } DNS_TKEY_DATAW
, *PDNS_TKEY_DATAW
;
337 LPSTR pNameAlgorithm
;
338 PBYTE pAlgorithmPacket
;
341 LONGLONG i64CreateTime
;
347 UCHAR cAlgNameLength
;
348 BOOL bPacketPointers
;
349 } DNS_TSIG_DATAA
, *PDNS_TSIG_DATAA
;
351 LPWSTR pNameAlgorithm
;
352 PBYTE pAlgorithmPacket
;
355 LONGLONG i64CreateTime
;
361 UCHAR cAlgNameLength
;
362 BOOL bPacketPointers
;
363 } DNS_TSIG_DATAW
, *PDNS_TSIG_DATAW
;
366 DWORD dwLookupTimeout
;
367 DWORD dwCacheTimeout
;
368 DWORD cWinsServerCount
;
369 IP4_ADDRESS WinsServers
[1];
370 } DNS_WINS_DATA
, *PDNS_WINS_DATA
;
373 DWORD dwLookupTimeout
;
374 DWORD dwCacheTimeout
;
375 LPSTR pNameResultDomain
;
376 } DNS_WINSR_DATAA
, *PDNS_WINSR_DATAA
;
379 DWORD dwLookupTimeout
;
380 DWORD dwCacheTimeout
;
381 LPWSTR pNameResultDomain
;
382 } DNS_WINSR_DATAW
, *PDNS_WINSR_DATAW
;
383 typedef struct _DNS_WIRE_QUESTION
{
386 } DNS_WIRE_QUESTION
, *PDNS_WIRE_QUESTION
;
387 typedef struct _DNS_WIRE_RECORD
{
392 } DNS_WIRE_RECORD
, *PDNS_WIRE_RECORD
;
394 IP4_ADDRESS IpAddress
;
397 } DNS_WKS_DATA
, *PDNS_WKS_DATA
;
398 typedef struct _DnsRecordA
{
399 struct _DnsRecordA
* pNext
;
411 DNS_SOA_DATAA SOA
, Soa
;
412 DNS_PTR_DATAA PTR
, Ptr
, NS
, Ns
, CNAME
, Cname
, MB
, Mb
,
413 MD
, Md
, MF
, Mf
, MG
, Mg
, MR
, Mr
;
414 DNS_MINFO_DATAA MINFO
, Minfo
, RP
, Rp
;
415 DNS_MX_DATAA MX
, Mx
, AFSDB
, Afsdb
, RT
, Rt
;
416 DNS_TXT_DATAA HINFO
, Hinfo
, ISDN
, Isdn
, TXT
, Txt
, X25
;
418 DNS_WKS_DATA WKS
, Wks
;
420 DNS_KEY_DATA KEY
, Key
;
421 DNS_SIG_DATAA SIG
, Sig
;
422 DNS_ATMA_DATA ATMA
, Atma
;
423 DNS_NXT_DATAA NXT
, Nxt
;
424 DNS_SRV_DATAA SRV
, Srv
;
425 DNS_TKEY_DATAA TKEY
, Tkey
;
426 DNS_TSIG_DATAA TSIG
, Tsig
;
427 DNS_WINS_DATA WINS
, Wins
;
428 DNS_WINSR_DATAA WINSR
, WinsR
, NBSTAT
, Nbstat
;
430 } DNS_RECORDA
, *PDNS_RECORDA
;
431 typedef struct _DnsRecordW
{
432 struct _DnsRecordW
* pNext
;
444 DNS_SOA_DATAW SOA
, Soa
;
445 DNS_PTR_DATAW PTR
, Ptr
, NS
, Ns
, CNAME
, Cname
, MB
, Mb
,
446 MD
, Md
, MF
, Mf
, MG
, Mg
, MR
, Mr
;
447 DNS_MINFO_DATAW MINFO
, Minfo
, RP
, Rp
;
448 DNS_MX_DATAW MX
, Mx
, AFSDB
, Afsdb
, RT
, Rt
;
449 DNS_TXT_DATAW HINFO
, Hinfo
, ISDN
, Isdn
, TXT
, Txt
, X25
;
451 DNS_WKS_DATA WKS
, Wks
;
453 DNS_KEY_DATA KEY
, Key
;
454 DNS_SIG_DATAW SIG
, Sig
;
455 DNS_ATMA_DATA ATMA
, Atma
;
456 DNS_NXT_DATAW NXT
, Nxt
;
457 DNS_SRV_DATAW SRV
, Srv
;
458 DNS_TKEY_DATAW TKEY
, Tkey
;
459 DNS_TSIG_DATAW TSIG
, Tsig
;
460 DNS_WINS_DATA WINS
, Wins
;
461 DNS_WINSR_DATAW WINSR
, WinsR
, NBSTAT
, Nbstat
;
463 } DNS_RECORDW
, *PDNS_RECORDW
;
466 #define DNS_RECORD DNS_RECORDW
467 #define PDNS_RECORD PDNS_RECORDW
469 #define DNS_RECORD DNS_RECORDA
470 #define PDNS_RECORD PDNS_RECORDA
473 typedef struct _DnsRRSet
{
474 PDNS_RECORD pFirstRR
;
476 } DNS_RRSET
, *PDNS_RRSET
;
478 #define DNS_RRSET_INIT( rrset ) \
480 PDNS_RRSET _prrset = &(rrset); \
481 _prrset->pFirstRR = NULL; \
482 _prrset->pLastRR = (PDNS_RECORD) &_prrset->pFirstRR; \
485 #define DNS_RRSET_ADD( rrset, pnewRR ) \
487 PDNS_RRSET _prrset = &(rrset); \
488 PDNS_RECORD _prrnew = (pnewRR); \
489 _prrset->pLastRR->pNext = _prrnew; \
490 _prrset->pLastRR = _prrnew; \
493 #define DNS_RRSET_TERMINATE( rrset ) \
495 PDNS_RRSET _prrset = &(rrset); \
496 _prrset->pLastRR->pNext = NULL; \
499 DNS_STATUS WINAPI
DnsAcquireContextHandle_A(DWORD
,PVOID
,HANDLE
*);
500 DNS_STATUS WINAPI
DnsAcquireContextHandle_W(DWORD
,PVOID
,HANDLE
*);
501 DNS_STATUS WINAPI
DnsExtractRecordsFromMessage_W(PDNS_MESSAGE_BUFFER
,WORD
,PDNS_RECORD
*);
502 DNS_STATUS WINAPI
DnsExtractRecordsFromMessage_UTF8(PDNS_MESSAGE_BUFFER
,WORD
,PDNS_RECORD
*);
503 DNS_STATUS WINAPI
DnsModifyRecordsInSet_A(PDNS_RECORD
,PDNS_RECORD
,DWORD
,HANDLE
,PIP4_ARRAY
,PVOID
);
504 DNS_STATUS WINAPI
DnsModifyRecordsInSet_W(PDNS_RECORD
,PDNS_RECORD
,DWORD
,HANDLE
,PIP4_ARRAY
,PVOID
);
505 DNS_STATUS WINAPI
DnsModifyRecordsInSet_UTF8(PDNS_RECORD
,PDNS_RECORD
,DWORD
,HANDLE
,PIP4_ARRAY
,PVOID
);
506 BOOL WINAPI
DnsNameCompare_A(LPSTR
,LPSTR
);
507 BOOL WINAPI
DnsNameCompare_W(LPWSTR
,LPWSTR
);
508 DNS_STATUS WINAPI
DnsQuery_A(PCSTR
,WORD
,DWORD
,PIP4_ARRAY
,PDNS_RECORD
*,PVOID
*);
509 DNS_STATUS WINAPI
DnsQuery_W(PCWSTR
,WORD
,DWORD
,PIP4_ARRAY
,PDNS_RECORD
*,PVOID
*);
510 DNS_STATUS WINAPI
DnsQuery_UTF8(PCSTR
,WORD
,DWORD
,PIP4_ARRAY
,PDNS_RECORD
*,PVOID
*);
511 DNS_STATUS WINAPI
DnsQueryConfig(DNS_CONFIG_TYPE
,DWORD
,PWSTR
,PVOID
,PVOID
,PDWORD
);
512 BOOL WINAPI
DnsRecordCompare(PDNS_RECORD
,PDNS_RECORD
);
513 PDNS_RECORD WINAPI
DnsRecordCopyEx(PDNS_RECORD
,DNS_CHARSET
,DNS_CHARSET
);
514 void WINAPI
DnsRecordListFree(PDNS_RECORD
,DNS_FREE_TYPE
);
515 BOOL WINAPI
DnsRecordSetCompare(PDNS_RECORD
,PDNS_RECORD
,PDNS_RECORD
*,PDNS_RECORD
*);
516 PDNS_RECORD WINAPI
DnsRecordSetCopyEx(PDNS_RECORD
,DNS_CHARSET
,DNS_CHARSET
);
517 PDNS_RECORD WINAPI
DnsRecordSetDetach(PDNS_RECORD
);
518 void WINAPI
DnsReleaseContextHandle(HANDLE
);
519 DNS_STATUS WINAPI
DnsReplaceRecordSetA(PDNS_RECORD
,DWORD
,HANDLE
,PIP4_ARRAY
,PVOID
);
520 DNS_STATUS WINAPI
DnsReplaceRecordSetW(PDNS_RECORD
,DWORD
,HANDLE
,PIP4_ARRAY
,PVOID
);
521 DNS_STATUS WINAPI
DnsReplaceRecordSetUTF8(PDNS_RECORD
,DWORD
,HANDLE
,PIP4_ARRAY
,PVOID
);
522 DNS_STATUS WINAPI
DnsValidateName_A(LPCSTR
,DNS_NAME_FORMAT
);
523 DNS_STATUS WINAPI
DnsValidateName_W(LPCWSTR
, DNS_NAME_FORMAT
);
524 DNS_STATUS WINAPI
DnsValidateName_UTF8(LPCSTR
,DNS_NAME_FORMAT
);
525 BOOL WINAPI
DnsWriteQuestionToBuffer_W(PDNS_MESSAGE_BUFFER
,LPDWORD
,LPWSTR
,WORD
,WORD
,BOOL
);
526 BOOL WINAPI
DnsWriteQuestionToBuffer_UTF8(PDNS_MESSAGE_BUFFER
,LPDWORD
,LPSTR
,WORD
,WORD
,BOOL
);
529 #define DNS_MINFO_DATA DNS_MINFO_DATAW
530 #define PDNS_MINFO_DATA PDNS_MINFO_DATAW
531 #define DNS_MX_DATA DNS_MX_DATAW
532 #define PDNS_MX_DATA PDNS_MX_DATAW
533 #define DNS_NXT_DATA DNS_NXT_DATAW
534 #define PDNS_NXT_DATA PDNS_NXT_DATAW
535 #define DNS_PTR_DATA DNS_PTR_DATAW
536 #define PDNS_PTR_DATA PDNS_PTR_DATAW
537 #define DNS_SIG_DATA DNS_SIG_DATAW
538 #define PDNS_SIG_DATA PDNS_SIG_DATAW
539 #define DNS_SOA_DATA DNS_SOA_DATAW
540 #define PDNS_SOA_DATA PDNS_SOA_DATAW
541 #define DNS_TXT_DATA DNS_TXT_DATAW
542 #define PDNS_TXT_DATA PDNS_TXT_DATAW
543 #define DNS_TKEY_DATA DNS_TKEY_DATAW
544 #define PDNS_TKEY_DATA PDNS_TKEY_DATAW
545 #define DNS_WINSR_DATA DNS_WINSR_DATAW
546 #define PDNS_WINSR_DATA PDNS_WINSR_DATAW
547 #define DnsAcquireContextHandle DnsAcquireContextHandle_W
548 #define DnsModifyRecordsInSet DnsModifyRecordsInSet_W
549 #define DnsNameCompare DnsNameCompare_W
550 #define DnsQuery DnsQuery_W
551 #define DnsReplaceRecordSet DnsReplaceRecordSetW
552 #define DnsValidateName DnsValidateName_W
554 #define DNS_MINFO_DATA DNS_MINFO_DATAA
555 #define PDNS_MINFO_DATA PDNS_MINFO_DATAA
556 #define DNS_MX_DATA DNS_MX_DATAA
557 #define PDNS_MX_DATA PDNS_MX_DATAA
558 #define DNS_NXT_DATA DNS_NXT_DATAA
559 #define PDNS_NXT_DATA PDNS_NXT_DATAA
560 #define DNS_PTR_DATA DNS_PTR_DATAA
561 #define PDNS_PTR_DATA PDNS_PTR_DATAA
562 #define DNS_SIG_DATA DNS_SIG_DATAA
563 #define PDNS_SIG_DATA PDNS_SIG_DATAA
564 #define DNS_SOA_DATA DNS_SOA_DATAA
565 #define PDNS_SOA_DATA PDNS_SOA_DATAA
566 #define DNS_TXT_DATA DNS_TXT_DATAA
567 #define PDNS_TXT_DATA PDNS_TXT_DATAA
568 #define DNS_TKEY_DATA DNS_TKEY_DATAA
569 #define PDNS_TKEY_DATA PDNS_TKEY_DATAA
570 #define DNS_WINSR_DATA DNS_WINSR_DATAA
571 #define PDNS_WINSR_DATA PDNS_WINSR_DATAA
572 #define DnsAcquireContextHandle DnsAcquireContextHandle_A
573 #define DnsModifyRecordsInSet DnsModifyRecordsInSet_A
574 #define DnsNameCompare DnsNameCompare_A
575 #define DnsQuery DnsQuery_A
576 #define DnsReplaceRecordSet DnsReplaceRecordSetA
577 #define DnsValidateName DnsValidateName_A
580 #endif /* RC_INVOKED */
586 #endif /* _WINDNS_H */