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
33 typedef DWORD IP4_ADDRESS
;
34 typedef DWORD DNS_STATUS
;
89 DNS_TYPE_ANY
=DNS_TYPE_ALL
91 typedef enum _DNS_CHARSET
100 DnsConfigPrimaryDomainName_W
,
101 DnsConfigPrimaryDomainName_A
,
102 DnsConfigPrimaryDomainName_UTF8
,
103 DnsConfigAdapterDomainName_W
,
104 DnsConfigAdapterDomainName_A
,
105 DnsConfigAdapterDomainName_UTF8
,
106 DnsConfigDnsServerList
,
108 DnsConfigAdapterInfo
,
109 DnsConfigPrimaryHostNameRegistrationEnabled
,
110 DnsConfigAdapterHostNameRegistrationEnabled
,
111 DnsConfigAddressRegistrationMaxCount
,
114 DnsConfigHostName_UTF8
,
115 DnsConfigFullHostName_W
,
116 DnsConfigFullHostName_A
,
117 DnsConfigFullHostName_UTF8
123 DnsFreeParsedMessageFields
125 typedef enum _DNS_NAME_FORMAT
130 DnsNameHostnameLabel
,
141 typedef struct _IP4_ARRAY
{
143 IP4_ADDRESS AddrArray
[1];
144 } IP4_ARRAY
, *PIP4_ARRAY
;
147 } IP6_ADDRESS
, *PIP6_ADDRESS
, DNS_IP6_ADDRESS
, *PDNS_IP6_ADDRESS
;
148 typedef struct _DNS_HEADER
{
150 BYTE RecursionDesired
;
157 BYTE RecursionAvailable
;
160 WORD NameServerCount
;
161 WORD AdditionalCount
;
162 } DNS_HEADER
, *PDNS_HEADER
;
163 typedef struct _DNS_MESSAGE_BUFFER
{
164 DNS_HEADER MessageHead
;
166 } DNS_MESSAGE_BUFFER
, *PDNS_MESSAGE_BUFFER
;
167 typedef struct _DnsRecordFlags
{
175 IP4_ADDRESS IpAddress
;
176 } DNS_A_DATA
, *PDNS_A_DATA
;
178 DNS_IP6_ADDRESS Ip6Address
;
179 } DNS_AAAA_DATA
, *PDNS_AAAA_DATA
;
180 #define DNS_ATMA_MAX_ADDR_LENGTH 20
183 BYTE Address
[DNS_ATMA_MAX_ADDR_LENGTH
];
184 } DNS_ATMA_DATA
, *PDNS_ATMA_DATA
;
190 } DNS_KEY_DATA
, *PDNS_KEY_DATA
;
199 } DNS_LOC_DATA
, *PDNS_LOC_DATA
;
202 LPSTR pNameErrorsMailbox
;
203 } DNS_MINFO_DATAA
, *PDNS_MINFO_DATAA
;
206 LPWSTR pNameErrorsMailbox
;
207 } DNS_MINFO_DATAW
, *PDNS_MINFO_DATAW
;
212 } DNS_MX_DATAA
, *PDNS_MX_DATAA
;
214 LPWSTR pNameExchange
;
217 } DNS_MX_DATAW
, *PDNS_MX_DATAW
;
221 } DNS_NULL_DATA
, *PDNS_NULL_DATA
;
226 } DNS_NXT_DATAA
, *PDNS_NXT_DATAA
;
231 } DNS_NXT_DATAW
, *PDNS_NXT_DATAW
;
234 } DNS_PTR_DATAA
, *PDNS_PTR_DATAA
;
237 } DNS_PTR_DATAW
, *PDNS_PTR_DATAW
;
249 } DNS_SIG_DATAA
, *PDNS_SIG_DATAA
;
261 } DNS_SIG_DATAW
, *PDNS_SIG_DATAW
;
263 LPSTR pNamePrimaryServer
;
264 LPSTR pNameAdministrator
;
270 } DNS_SOA_DATAA
, *PDNS_SOA_DATAA
;
272 LPWSTR pNamePrimaryServer
;
273 LPWSTR pNameAdministrator
;
279 } DNS_SOA_DATAW
, *PDNS_SOA_DATAW
;
286 } DNS_SRV_DATAA
, *PDNS_SRV_DATAA
;
293 } DNS_SRV_DATAW
, *PDNS_SRV_DATAW
;
296 LPSTR pStringArray
[1];
297 } DNS_TXT_DATAA
, *PDNS_TXT_DATAA
;
300 LPWSTR pStringArray
[1];
301 } DNS_TXT_DATAW
, *PDNS_TXT_DATAW
;
303 LPSTR pNameAlgorithm
;
304 PBYTE pAlgorithmPacket
;
313 UCHAR cAlgNameLength
;
314 BOOL bPacketPointers
;
315 } DNS_TKEY_DATAA
, *PDNS_TKEY_DATAA
;
317 LPWSTR pNameAlgorithm
;
318 PBYTE pAlgorithmPacket
;
327 UCHAR cAlgNameLength
;
328 BOOL bPacketPointers
;
329 } DNS_TKEY_DATAW
, *PDNS_TKEY_DATAW
;
331 LPSTR pNameAlgorithm
;
332 PBYTE pAlgorithmPacket
;
335 LONGLONG i64CreateTime
;
341 UCHAR cAlgNameLength
;
342 BOOL bPacketPointers
;
343 } DNS_TSIG_DATAA
, *PDNS_TSIG_DATAA
;
345 LPWSTR pNameAlgorithm
;
346 PBYTE pAlgorithmPacket
;
349 LONGLONG i64CreateTime
;
355 UCHAR cAlgNameLength
;
356 BOOL bPacketPointers
;
357 } DNS_TSIG_DATAW
, *PDNS_TSIG_DATAW
;
360 DWORD dwLookupTimeout
;
361 DWORD dwCacheTimeout
;
362 DWORD cWinsServerCount
;
363 IP4_ADDRESS WinsServers
[1];
364 } DNS_WINS_DATA
, *PDNS_WINS_DATA
;
367 DWORD dwLookupTimeout
;
368 DWORD dwCacheTimeout
;
369 LPSTR pNameResultDomain
;
370 } DNS_WINSR_DATAA
, *PDNS_WINSR_DATAA
;
373 DWORD dwLookupTimeout
;
374 DWORD dwCacheTimeout
;
375 LPWSTR pNameResultDomain
;
376 } DNS_WINSR_DATAW
, *PDNS_WINSR_DATAW
;
377 typedef struct _DNS_WIRE_QUESTION
{
380 } DNS_WIRE_QUESTION
, *PDNS_WIRE_QUESTION
;
381 typedef struct _DNS_WIRE_RECORD
{
386 } DNS_WIRE_RECORD
, *PDNS_WIRE_RECORD
;
388 IP4_ADDRESS IpAddress
;
391 } DNS_WKS_DATA
, *PDNS_WKS_DATA
;
392 typedef struct _DnsRecordA
{
393 struct _DnsRecordA
* pNext
;
405 DNS_SOA_DATAA SOA
, Soa
;
406 DNS_PTR_DATAA PTR
, Ptr
, NS
, Ns
, CNAME
, Cname
, MB
, Mb
,
407 MD
, Md
, MF
, Mf
, MG
, Mg
, MR
, Mr
;
408 DNS_MINFO_DATAA MINFO
, Minfo
, RP
, Rp
;
409 DNS_MX_DATAA MX
, Mx
, AFSDB
, Afsdb
, RT
, Rt
;
410 DNS_TXT_DATAA HINFO
, Hinfo
, ISDN
, Isdn
, TXT
, Txt
, X25
;
412 DNS_WKS_DATA WKS
, Wks
;
414 DNS_KEY_DATA KEY
, Key
;
415 DNS_SIG_DATAA SIG
, Sig
;
416 DNS_ATMA_DATA ATMA
, Atma
;
417 DNS_NXT_DATAA NXT
, Nxt
;
418 DNS_SRV_DATAA SRV
, Srv
;
419 DNS_TKEY_DATAA TKEY
, Tkey
;
420 DNS_TSIG_DATAA TSIG
, Tsig
;
421 DNS_WINS_DATA WINS
, Wins
;
422 DNS_WINSR_DATAA WINSR
, WinsR
, NBSTAT
, Nbstat
;
424 } DNS_RECORDA
, *PDNS_RECORDA
;
425 typedef struct _DnsRecordW
{
426 struct _DnsRecordW
* pNext
;
438 DNS_SOA_DATAW SOA
, Soa
;
439 DNS_PTR_DATAW PTR
, Ptr
, NS
, Ns
, CNAME
, Cname
, MB
, Mb
,
440 MD
, Md
, MF
, Mf
, MG
, Mg
, MR
, Mr
;
441 DNS_MINFO_DATAW MINFO
, Minfo
, RP
, Rp
;
442 DNS_MX_DATAW MX
, Mx
, AFSDB
, Afsdb
, RT
, Rt
;
443 DNS_TXT_DATAW HINFO
, Hinfo
, ISDN
, Isdn
, TXT
, Txt
, X25
;
445 DNS_WKS_DATA WKS
, Wks
;
447 DNS_KEY_DATA KEY
, Key
;
448 DNS_SIG_DATAW SIG
, Sig
;
449 DNS_ATMA_DATA ATMA
, Atma
;
450 DNS_NXT_DATAW NXT
, Nxt
;
451 DNS_SRV_DATAW SRV
, Srv
;
452 DNS_TKEY_DATAW TKEY
, Tkey
;
453 DNS_TSIG_DATAW TSIG
, Tsig
;
454 DNS_WINS_DATA WINS
, Wins
;
455 DNS_WINSR_DATAW WINSR
, WinsR
, NBSTAT
, Nbstat
;
457 } DNS_RECORDW
, *PDNS_RECORDW
;
460 #define DNS_RECORD DNS_RECORDW
461 #define PDNS_RECORD PDNS_RECORDW
463 #define DNS_RECORD DNS_RECORDA
464 #define PDNS_RECORD PDNS_RECORDA
467 typedef struct _DnsRRSet
{
468 PDNS_RECORD pFirstRR
;
470 } DNS_RRSET
, *PDNS_RRSET
;
472 DNS_STATUS WINAPI
DnsAcquireContextHandle_A(DWORD
,PVOID
,HANDLE
*);
473 DNS_STATUS WINAPI
DnsAcquireContextHandle_W(DWORD
,PVOID
,HANDLE
*);
474 DNS_STATUS WINAPI
DnsExtractRecordsFromMessage_W(PDNS_MESSAGE_BUFFER
,WORD
,PDNS_RECORD
*);
475 DNS_STATUS WINAPI
DnsExtractRecordsFromMessage_UTF8(PDNS_MESSAGE_BUFFER
,WORD
,PDNS_RECORD
*);
476 DNS_STATUS WINAPI
DnsModifyRecordsInSet_A(PDNS_RECORD
,PDNS_RECORD
,DWORD
,HANDLE
,PIP4_ARRAY
,PVOID
);
477 DNS_STATUS WINAPI
DnsModifyRecordsInSet_W(PDNS_RECORD
,PDNS_RECORD
,DWORD
,HANDLE
,PIP4_ARRAY
,PVOID
);
478 DNS_STATUS WINAPI
DnsModifyRecordsInSet_UTF8(PDNS_RECORD
,PDNS_RECORD
,DWORD
,HANDLE
,PIP4_ARRAY
,PVOID
);
479 BOOL WINAPI
DnsNameCompare_A(LPSTR
,LPSTR
);
480 BOOL WINAPI
DnsNameCompare_W(LPWSTR
,LPWSTR
);
481 DNS_STATUS WINAPI
DnsQuery_A(PCSTR
,WORD
,DWORD
,PIP4_ARRAY
,PDNS_RECORD
*,PVOID
*);
482 DNS_STATUS WINAPI
DnsQuery_W(PCWSTR
,WORD
,DWORD
,PIP4_ARRAY
,PDNS_RECORD
*,PVOID
*);
483 DNS_STATUS WINAPI
DnsQuery_UTF8(PCSTR
,WORD
,DWORD
,PIP4_ARRAY
,PDNS_RECORD
*,PVOID
*);
484 DNS_STATUS WINAPI
DnsQueryConfig(DNS_CONFIG_TYPE
,DWORD
,PWSTR
,PVOID
,PVOID
,PDWORD
);
485 BOOL WINAPI
DnsRecordCompare(PDNS_RECORD
,PDNS_RECORD
);
486 PDNS_RECORD WINAPI
DnsRecordCopyEx(PDNS_RECORD
,DNS_CHARSET
,DNS_CHARSET
);
487 void WINAPI
DnsRecordListFree(PDNS_RECORD
,DNS_FREE_TYPE
);
488 BOOL WINAPI
DnsRecordSetCompare(PDNS_RECORD
,PDNS_RECORD
,PDNS_RECORD
*,PDNS_RECORD
*);
489 PDNS_RECORD WINAPI
DnsRecordSetCopyEx(PDNS_RECORD
,DNS_CHARSET
,DNS_CHARSET
);
490 PDNS_RECORD WINAPI
DnsRecordSetDetach(PDNS_RECORD
);
491 void WINAPI
DnsReleaseContextHandle(HANDLE
);
492 DNS_STATUS WINAPI
DnsReplaceRecordSetA(PDNS_RECORD
,DWORD
,HANDLE
,PIP4_ARRAY
,PVOID
);
493 DNS_STATUS WINAPI
DnsReplaceRecordSetW(PDNS_RECORD
,DWORD
,HANDLE
,PIP4_ARRAY
,PVOID
);
494 DNS_STATUS WINAPI
DnsReplaceRecordSetUTF8(PDNS_RECORD
,DWORD
,HANDLE
,PIP4_ARRAY
,PVOID
);
495 DNS_STATUS WINAPI
DnsValidateName_A(LPCSTR
,DNS_NAME_FORMAT
);
496 DNS_STATUS WINAPI
DnsValidateName_W(LPCWSTR
, DNS_NAME_FORMAT
);
497 DNS_STATUS WINAPI
DnsValidateName_UTF8(LPCSTR
,DNS_NAME_FORMAT
);
498 BOOL WINAPI
DnsWriteQuestionToBuffer_W(PDNS_MESSAGE_BUFFER
,LPDWORD
,LPWSTR
,WORD
,WORD
,BOOL
);
499 BOOL WINAPI
DnsWriteQuestionToBuffer_UTF8(PDNS_MESSAGE_BUFFER
,LPDWORD
,LPSTR
,WORD
,WORD
,BOOL
);
502 #define DNS_MINFO_DATA DNS_MINFO_DATAW
503 #define PDNS_MINFO_DATA PDNS_MINFO_DATAW
504 #define DNS_MX_DATA DNS_MX_DATAW
505 #define PDNS_MX_DATA PDNS_MX_DATAW
506 #define DNS_NXT_DATA DNS_NXT_DATAW
507 #define PDNS_NXT_DATA PDNS_NXT_DATAW
508 #define DNS_PTR_DATA DNS_PTR_DATAW
509 #define PDNS_PTR_DATA PDNS_PTR_DATAW
510 #define DNS_SIG_DATA DNS_SIG_DATAW
511 #define PDNS_SIG_DATA PDNS_SIG_DATAW
512 #define DNS_SOA_DATA DNS_SOA_DATAW
513 #define PDNS_SOA_DATA PDNS_SOA_DATAW
514 #define DNS_TXT_DATA DNS_TXT_DATAW
515 #define PDNS_TXT_DATA PDNS_TXT_DATAW
516 #define DNS_TKEY_DATA DNS_TKEY_DATAW
517 #define PDNS_TKEY_DATA PDNS_TKEY_DATAW
518 #define DNS_WINSR_DATA DNS_WINSR_DATAW
519 #define PDNS_WINSR_DATA PDNS_WINSR_DATAW
520 #define DnsAcquireContextHandle DnsAcquireContextHandle_W
521 #define DnsModifyRecordsInSet DnsModifyRecordsInSet_W
522 #define DnsNameCompare DnsNameCompare_W
523 #define DnsQuery DnsQuery_W
524 #define DnsReplaceRecordSet DnsReplaceRecordSetW
525 #define DnsValidateName DnsValidateName_W
527 #define DNS_MINFO_DATA DNS_MINFO_DATAA
528 #define PDNS_MINFO_DATA PDNS_MINFO_DATAA
529 #define DNS_MX_DATA DNS_MX_DATAA
530 #define PDNS_MX_DATA PDNS_MX_DATAA
531 #define DNS_NXT_DATA DNS_NXT_DATAA
532 #define PDNS_NXT_DATA PDNS_NXT_DATAA
533 #define DNS_PTR_DATA DNS_PTR_DATAA
534 #define PDNS_PTR_DATA PDNS_PTR_DATAA
535 #define DNS_SIG_DATA DNS_SIG_DATAA
536 #define PDNS_SIG_DATA PDNS_SIG_DATAA
537 #define DNS_SOA_DATA DNS_SOA_DATAA
538 #define PDNS_SOA_DATA PDNS_SOA_DATAA
539 #define DNS_TXT_DATA DNS_TXT_DATAA
540 #define PDNS_TXT_DATA PDNS_TXT_DATAA
541 #define DNS_TKEY_DATA DNS_TKEY_DATAA
542 #define PDNS_TKEY_DATA PDNS_TKEY_DATAA
543 #define DNS_WINSR_DATA DNS_WINSR_DATAA
544 #define PDNS_WINSR_DATA PDNS_WINSR_DATAA
545 #define DnsAcquireContextHandle DnsAcquireContextHandle_A
546 #define DnsModifyRecordsInSet DnsModifyRecordsInSet_A
547 #define DnsNameCompare DnsNameCompare_A
548 #define DnsQuery DnsQuery_A
549 #define DnsReplaceRecordSet DnsReplaceRecordSetA
550 #define DnsValidateName DnsValidateName_A
553 #endif /* RC_INVOKED */
559 #endif /* _WINDNS_H */