[RSHELL]
[reactos.git] / include / psdk / windns.h
1 #ifndef _WINDNS_H
2 #define _WINDNS_H
3
4 #ifdef __cplusplus
5 extern "C" {
6 #endif
7
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
22
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
31
32 #define DNS_CONFIG_FLAG_ALLOC TRUE
33
34 #ifndef RC_INVOKE
35 typedef DWORD IP4_ADDRESS;
36 typedef _Return_type_success_(return == 0) DWORD DNS_STATUS;
37 #define DNS_TYPE_ZERO 0x0000
38
39 #define DNS_TYPE_A 0x0001
40 #define DNS_TYPE_NS 0x0002
41 #define DNS_TYPE_MD 0x0003
42 #define DNS_TYPE_MF 0x0004
43 #define DNS_TYPE_CNAME 0x0005
44 #define DNS_TYPE_SOA 0x0006
45 #define DNS_TYPE_MB 0x0007
46 #define DNS_TYPE_MG 0x0008
47 #define DNS_TYPE_MR 0x0009
48 #define DNS_TYPE_NULL 0x000a
49 #define DNS_TYPE_WKS 0x000b
50 #define DNS_TYPE_PTR 0x000c
51 #define DNS_TYPE_HINFO 0x000d
52 #define DNS_TYPE_MINFO 0x000e
53 #define DNS_TYPE_MX 0x000f
54 #define DNS_TYPE_TEXT 0x0010
55 #define DNS_TYPE_RP 0x0011
56 #define DNS_TYPE_AFSDB 0x0012
57 #define DNS_TYPE_X25 0x0013
58 #define DNS_TYPE_ISDN 0x0014
59 #define DNS_TYPE_RT 0x0015
60 #define DNS_TYPE_NSAP 0x0016
61 #define DNS_TYPE_NSAPPTR 0x0017
62 #define DNS_TYPE_SIG 0x0018
63 #define DNS_TYPE_KEY 0x0019
64 #define DNS_TYPE_PX 0x001a
65 #define DNS_TYPE_GPOS 0x001b
66 #define DNS_TYPE_AAAA 0x001c
67 #define DNS_TYPE_LOC 0x001d
68 #define DNS_TYPE_NXT 0x001e
69 #define DNS_TYPE_EID 0x001f
70 #define DNS_TYPE_NIMLOC 0x0020
71 #define DNS_TYPE_SRV 0x0021
72 #define DNS_TYPE_ATMA 0x0022
73 #define DNS_TYPE_NAPTR 0x0023
74 #define DNS_TYPE_KX 0x0024
75 #define DNS_TYPE_CERT 0x0025
76 #define DNS_TYPE_A6 0x0026
77 #define DNS_TYPE_DNAME 0x0027
78 #define DNS_TYPE_SINK 0x0028
79 #define DNS_TYPE_OPT 0x0029
80 #define DNS_TYPE_UINFO 0x0064
81 #define DNS_TYPE_UID 0x0065
82 #define DNS_TYPE_GID 0x0066
83 #define DNS_TYPE_UNSPEC 0x0067
84 #define DNS_TYPE_ADDRS 0x00f8
85 #define DNS_TYPE_TKEY 0x00f9
86 #define DNS_TYPE_TSIG 0x00fa
87 #define DNS_TYPE_IXFR 0x00fb
88 #define DNS_TYPE_AXFR 0x00fc
89 #define DNS_TYPE_MAILB 0x00fd
90 #define DNS_TYPE_MAILA 0x00fe
91 #define DNS_TYPE_ALL 0x00ff
92 #define DNS_TYPE_ANY 0x00ff
93
94 #define DNS_TYPE_WINS 0xff01
95 #define DNS_TYPE_WINSR 0xff02
96 #define DNS_TYPE_NBSTAT (DNS_TYPE_WINSR)
97
98 typedef enum _DNS_CHARSET
99 {
100 DnsCharSetUnknown,
101 DnsCharSetUnicode,
102 DnsCharSetUtf8,
103 DnsCharSetAnsi
104 } DNS_CHARSET;
105 typedef enum
106 {
107 DnsConfigPrimaryDomainName_W,
108 DnsConfigPrimaryDomainName_A,
109 DnsConfigPrimaryDomainName_UTF8,
110 DnsConfigAdapterDomainName_W,
111 DnsConfigAdapterDomainName_A,
112 DnsConfigAdapterDomainName_UTF8,
113 DnsConfigDnsServerList,
114 DnsConfigSearchList,
115 DnsConfigAdapterInfo,
116 DnsConfigPrimaryHostNameRegistrationEnabled,
117 DnsConfigAdapterHostNameRegistrationEnabled,
118 DnsConfigAddressRegistrationMaxCount,
119 DnsConfigHostName_W,
120 DnsConfigHostName_A,
121 DnsConfigHostName_UTF8,
122 DnsConfigFullHostName_W,
123 DnsConfigFullHostName_A,
124 DnsConfigFullHostName_UTF8
125 } DNS_CONFIG_TYPE;
126 typedef enum
127 {
128 DnsFreeFlat = 0,
129 DnsFreeRecordList,
130 DnsFreeParsedMessageFields
131 } DNS_FREE_TYPE;
132 typedef enum _DNS_NAME_FORMAT
133 {
134 DnsNameDomain,
135 DnsNameDomainLabel,
136 DnsNameHostnameFull,
137 DnsNameHostnameLabel,
138 DnsNameWildcard,
139 DnsNameSrvRecord
140 } DNS_NAME_FORMAT;
141 typedef enum
142 {
143 DnsSectionQuestion,
144 DnsSectionAnswer,
145 DnsSectionAuthority,
146 DnsSectionAdditional
147 } DNS_SECTION;
148 typedef struct _IP4_ARRAY {
149 DWORD AddrCount;
150 IP4_ADDRESS AddrArray[1];
151 } IP4_ARRAY, *PIP4_ARRAY;
152 typedef struct {
153 DWORD IP6Dword[4];
154 } IP6_ADDRESS, *PIP6_ADDRESS, DNS_IP6_ADDRESS, *PDNS_IP6_ADDRESS;
155 typedef struct _DNS_HEADER {
156 WORD Xid;
157 BYTE RecursionDesired;
158 BYTE Truncation;
159 BYTE Authoritative;
160 BYTE Opcode;
161 BYTE IsResponse;
162 BYTE ResponseCode;
163 BYTE Reserved;
164 BYTE RecursionAvailable;
165 WORD QuestionCount;
166 WORD AnswerCount;
167 WORD NameServerCount;
168 WORD AdditionalCount;
169 } DNS_HEADER, *PDNS_HEADER;
170 typedef struct _DNS_MESSAGE_BUFFER {
171 DNS_HEADER MessageHead;
172 CHAR MessageBody[1];
173 } DNS_MESSAGE_BUFFER, *PDNS_MESSAGE_BUFFER;
174 typedef struct _DnsRecordFlags {
175 DWORD Section :2;
176 DWORD Delete :1;
177 DWORD CharSet :2;
178 DWORD Unused :3;
179 DWORD Reserved :24;
180 } DNS_RECORD_FLAGS;
181 #define DNSREC_QUESTION 0
182 #define DNSREC_ANSWER 1
183 #define DNSREC_AUTHORITY 2
184 #define DNSREC_ADDITIONAL 3
185 typedef struct {
186 IP4_ADDRESS IpAddress;
187 } DNS_A_DATA, *PDNS_A_DATA;
188 typedef struct {
189 DNS_IP6_ADDRESS Ip6Address;
190 } DNS_AAAA_DATA, *PDNS_AAAA_DATA;
191 #define DNS_ATMA_MAX_ADDR_LENGTH 20
192 typedef struct {
193 BYTE AddressType;
194 BYTE Address[DNS_ATMA_MAX_ADDR_LENGTH];
195 } DNS_ATMA_DATA, *PDNS_ATMA_DATA;
196 typedef struct {
197 WORD wFlags;
198 BYTE chProtocol;
199 BYTE chAlgorithm;
200 BYTE Key[1];
201 } DNS_KEY_DATA, *PDNS_KEY_DATA;
202 typedef struct {
203 WORD wVersion;
204 WORD wSize;
205 WORD wHorPrec;
206 WORD wVerPrec;
207 DWORD dwLatitude;
208 DWORD dwLongitude;
209 DWORD dwAltitude;
210 } DNS_LOC_DATA, *PDNS_LOC_DATA;
211 typedef struct {
212 LPSTR pNameMailbox;
213 LPSTR pNameErrorsMailbox;
214 } DNS_MINFO_DATAA, *PDNS_MINFO_DATAA;
215 typedef struct {
216 LPWSTR pNameMailbox;
217 LPWSTR pNameErrorsMailbox;
218 } DNS_MINFO_DATAW, *PDNS_MINFO_DATAW;
219 typedef struct {
220 LPSTR pNameExchange;
221 WORD wPreference;
222 WORD Pad;
223 } DNS_MX_DATAA, *PDNS_MX_DATAA;
224 typedef struct {
225 LPWSTR pNameExchange;
226 WORD wPreference;
227 WORD Pad;
228 } DNS_MX_DATAW, *PDNS_MX_DATAW;
229 typedef struct {
230 DWORD dwByteCount;
231 BYTE Data[1];
232 } DNS_NULL_DATA, *PDNS_NULL_DATA;
233 typedef struct {
234 LPSTR pNameNext;
235 WORD wNumTypes;
236 WORD wTypes[1];
237 } DNS_NXT_DATAA, *PDNS_NXT_DATAA;
238 typedef struct {
239 LPWSTR pNameNext;
240 WORD wNumTypes;
241 WORD wTypes[1];
242 } DNS_NXT_DATAW, *PDNS_NXT_DATAW;
243 typedef struct {
244 LPSTR pNameHost;
245 } DNS_PTR_DATAA, *PDNS_PTR_DATAA;
246 typedef struct {
247 LPWSTR pNameHost;
248 } DNS_PTR_DATAW, *PDNS_PTR_DATAW;
249 typedef struct {
250 LPSTR pNameSigner;
251 WORD wTypeCovered;
252 BYTE chAlgorithm;
253 BYTE chLabelCount;
254 DWORD dwOriginalTtl;
255 DWORD dwExpiration;
256 DWORD dwTimeSigned;
257 WORD wKeyTag;
258 WORD Pad;
259 BYTE Signature[1];
260 } DNS_SIG_DATAA, *PDNS_SIG_DATAA;
261 typedef struct {
262 LPWSTR pNameSigner;
263 WORD wTypeCovered;
264 BYTE chAlgorithm;
265 BYTE chLabelCount;
266 DWORD dwOriginalTtl;
267 DWORD dwExpiration;
268 DWORD dwTimeSigned;
269 WORD wKeyTag;
270 WORD Pad;
271 BYTE Signature[1];
272 } DNS_SIG_DATAW, *PDNS_SIG_DATAW;
273 typedef struct {
274 LPSTR pNamePrimaryServer;
275 LPSTR pNameAdministrator;
276 DWORD dwSerialNo;
277 DWORD dwRefresh;
278 DWORD dwRetry;
279 DWORD dwExpire;
280 DWORD dwDefaultTtl;
281 } DNS_SOA_DATAA, *PDNS_SOA_DATAA;
282 typedef struct {
283 LPWSTR pNamePrimaryServer;
284 LPWSTR pNameAdministrator;
285 DWORD dwSerialNo;
286 DWORD dwRefresh;
287 DWORD dwRetry;
288 DWORD dwExpire;
289 DWORD dwDefaultTtl;
290 } DNS_SOA_DATAW, *PDNS_SOA_DATAW;
291 typedef struct {
292 LPSTR pNameTarget;
293 WORD wPriority;
294 WORD wWeight;
295 WORD wPort;
296 WORD Pad;
297 } DNS_SRV_DATAA, *PDNS_SRV_DATAA;
298 typedef struct {
299 LPWSTR pNameTarget;
300 WORD wPriority;
301 WORD wWeight;
302 WORD wPort;
303 WORD Pad;
304 } DNS_SRV_DATAW, *PDNS_SRV_DATAW;
305 typedef struct {
306 DWORD dwStringCount;
307 LPSTR pStringArray[1];
308 } DNS_TXT_DATAA, *PDNS_TXT_DATAA;
309 typedef struct {
310 DWORD dwStringCount;
311 LPWSTR pStringArray[1];
312 } DNS_TXT_DATAW, *PDNS_TXT_DATAW;
313 typedef struct {
314 LPSTR pNameAlgorithm;
315 PBYTE pAlgorithmPacket;
316 PBYTE pKey;
317 PBYTE pOtherData;
318 DWORD dwCreateTime;
319 DWORD dwExpireTime;
320 WORD wMode;
321 WORD wError;
322 WORD wKeyLength;
323 WORD wOtherLength;
324 UCHAR cAlgNameLength;
325 BOOL bPacketPointers;
326 } DNS_TKEY_DATAA, *PDNS_TKEY_DATAA;
327 typedef struct {
328 LPWSTR pNameAlgorithm;
329 PBYTE pAlgorithmPacket;
330 PBYTE pKey;
331 PBYTE pOtherData;
332 DWORD dwCreateTime;
333 DWORD dwExpireTime;
334 WORD wMode;
335 WORD wError;
336 WORD wKeyLength;
337 WORD wOtherLength;
338 UCHAR cAlgNameLength;
339 BOOL bPacketPointers;
340 } DNS_TKEY_DATAW, *PDNS_TKEY_DATAW;
341 typedef struct {
342 LPSTR pNameAlgorithm;
343 PBYTE pAlgorithmPacket;
344 PBYTE pSignature;
345 PBYTE pOtherData;
346 LONGLONG i64CreateTime;
347 WORD wFudgeTime;
348 WORD wOriginalXid;
349 WORD wError;
350 WORD wSigLength;
351 WORD wOtherLength;
352 UCHAR cAlgNameLength;
353 BOOL bPacketPointers;
354 } DNS_TSIG_DATAA, *PDNS_TSIG_DATAA;
355 typedef struct {
356 LPWSTR pNameAlgorithm;
357 PBYTE pAlgorithmPacket;
358 PBYTE pSignature;
359 PBYTE pOtherData;
360 LONGLONG i64CreateTime;
361 WORD wFudgeTime;
362 WORD wOriginalXid;
363 WORD wError;
364 WORD wSigLength;
365 WORD wOtherLength;
366 UCHAR cAlgNameLength;
367 BOOL bPacketPointers;
368 } DNS_TSIG_DATAW, *PDNS_TSIG_DATAW;
369 typedef struct {
370 DWORD dwMappingFlag;
371 DWORD dwLookupTimeout;
372 DWORD dwCacheTimeout;
373 DWORD cWinsServerCount;
374 IP4_ADDRESS WinsServers[1];
375 } DNS_WINS_DATA, *PDNS_WINS_DATA;
376 typedef struct {
377 DWORD dwMappingFlag;
378 DWORD dwLookupTimeout;
379 DWORD dwCacheTimeout;
380 LPSTR pNameResultDomain;
381 } DNS_WINSR_DATAA, *PDNS_WINSR_DATAA;
382 typedef struct {
383 DWORD dwMappingFlag;
384 DWORD dwLookupTimeout;
385 DWORD dwCacheTimeout;
386 LPWSTR pNameResultDomain;
387 } DNS_WINSR_DATAW, *PDNS_WINSR_DATAW;
388 typedef struct _DNS_WIRE_QUESTION {
389 WORD QuestionType;
390 WORD QuestionClass;
391 } DNS_WIRE_QUESTION, *PDNS_WIRE_QUESTION;
392 typedef struct _DNS_WIRE_RECORD {
393 WORD RecordType;
394 WORD RecordClass;
395 DWORD TimeToLive;
396 WORD DataLength;
397 } DNS_WIRE_RECORD, *PDNS_WIRE_RECORD;
398 typedef struct {
399 IP4_ADDRESS IpAddress;
400 UCHAR chProtocol;
401 BYTE BitMask[1];
402 } DNS_WKS_DATA, *PDNS_WKS_DATA;
403 typedef struct _DnsRecordA {
404 struct _DnsRecordA* pNext;
405 LPSTR pName;
406 WORD wType;
407 WORD wDataLength;
408 union {
409 DWORD DW;
410 DNS_RECORD_FLAGS S;
411 } Flags;
412 DWORD dwTtl;
413 DWORD dwReserved;
414 union {
415 DNS_A_DATA A;
416 DNS_SOA_DATAA SOA, Soa;
417 DNS_PTR_DATAA PTR, Ptr, NS, Ns, CNAME, Cname, MB, Mb,
418 MD, Md, MF, Mf, MG, Mg, MR, Mr;
419 DNS_MINFO_DATAA MINFO, Minfo, RP, Rp;
420 DNS_MX_DATAA MX, Mx, AFSDB, Afsdb, RT, Rt;
421 DNS_TXT_DATAA HINFO, Hinfo, ISDN, Isdn, TXT, Txt, X25;
422 DNS_NULL_DATA Null;
423 DNS_WKS_DATA WKS, Wks;
424 DNS_AAAA_DATA AAAA;
425 DNS_KEY_DATA KEY, Key;
426 DNS_SIG_DATAA SIG, Sig;
427 DNS_ATMA_DATA ATMA, Atma;
428 DNS_NXT_DATAA NXT, Nxt;
429 DNS_SRV_DATAA SRV, Srv;
430 DNS_TKEY_DATAA TKEY, Tkey;
431 DNS_TSIG_DATAA TSIG, Tsig;
432 DNS_WINS_DATA WINS, Wins;
433 DNS_WINSR_DATAA WINSR, WinsR, NBSTAT, Nbstat;
434 } Data;
435 } DNS_RECORDA, *PDNS_RECORDA;
436 typedef struct _DnsRecordW {
437 struct _DnsRecordW* pNext;
438 LPWSTR pName;
439 WORD wType;
440 WORD wDataLength;
441 union {
442 DWORD DW;
443 DNS_RECORD_FLAGS S;
444 } Flags;
445 DWORD dwTtl;
446 DWORD dwReserved;
447 union {
448 DNS_A_DATA A;
449 DNS_SOA_DATAW SOA, Soa;
450 DNS_PTR_DATAW PTR, Ptr, NS, Ns, CNAME, Cname, MB, Mb,
451 MD, Md, MF, Mf, MG, Mg, MR, Mr;
452 DNS_MINFO_DATAW MINFO, Minfo, RP, Rp;
453 DNS_MX_DATAW MX, Mx, AFSDB, Afsdb, RT, Rt;
454 DNS_TXT_DATAW HINFO, Hinfo, ISDN, Isdn, TXT, Txt, X25;
455 DNS_NULL_DATA Null;
456 DNS_WKS_DATA WKS, Wks;
457 DNS_AAAA_DATA AAAA;
458 DNS_KEY_DATA KEY, Key;
459 DNS_SIG_DATAW SIG, Sig;
460 DNS_ATMA_DATA ATMA, Atma;
461 DNS_NXT_DATAW NXT, Nxt;
462 DNS_SRV_DATAW SRV, Srv;
463 DNS_TKEY_DATAW TKEY, Tkey;
464 DNS_TSIG_DATAW TSIG, Tsig;
465 DNS_WINS_DATA WINS, Wins;
466 DNS_WINSR_DATAW WINSR, WinsR, NBSTAT, Nbstat;
467 } Data;
468 } DNS_RECORDW, *PDNS_RECORDW;
469
470 #ifdef UNICODE
471 #define DNS_RECORD DNS_RECORDW
472 #define PDNS_RECORD PDNS_RECORDW
473 #else
474 #define DNS_RECORD DNS_RECORDA
475 #define PDNS_RECORD PDNS_RECORDA
476 #endif
477
478 typedef struct _DnsRRSet {
479 PDNS_RECORD pFirstRR;
480 PDNS_RECORD pLastRR;
481 } DNS_RRSET, *PDNS_RRSET;
482
483 #define DNS_RRSET_INIT( rrset ) \
484 { \
485 PDNS_RRSET _prrset = &(rrset); \
486 _prrset->pFirstRR = NULL; \
487 _prrset->pLastRR = (PDNS_RECORD) &_prrset->pFirstRR; \
488 }
489
490 #define DNS_RRSET_ADD( rrset, pnewRR ) \
491 { \
492 PDNS_RRSET _prrset = &(rrset); \
493 PDNS_RECORD _prrnew = (pnewRR); \
494 _prrset->pLastRR->pNext = _prrnew; \
495 _prrset->pLastRR = _prrnew; \
496 }
497
498 #define DNS_RRSET_TERMINATE( rrset ) \
499 { \
500 PDNS_RRSET _prrset = &(rrset); \
501 _prrset->pLastRR->pNext = NULL; \
502 }
503
504 DNS_STATUS
505 WINAPI
506 DnsAcquireContextHandle_A(
507 _In_ DWORD CredentialFlags,
508 _In_opt_ PVOID Credentials,
509 _Outptr_ PHANDLE pContext);
510
511 DNS_STATUS
512 WINAPI
513 DnsAcquireContextHandle_W(
514 _In_ DWORD CredentialFlags,
515 _In_opt_ PVOID Credentials,
516 _Outptr_ PHANDLE pContext);
517
518 DNS_STATUS
519 WINAPI
520 DnsExtractRecordsFromMessage_W(
521 _In_ PDNS_MESSAGE_BUFFER pDnsBuffer,
522 _In_ WORD wMessageLength,
523 _Outptr_ PDNS_RECORD *ppRecord);
524
525 DNS_STATUS
526 WINAPI
527 DnsExtractRecordsFromMessage_UTF8(
528 _In_ PDNS_MESSAGE_BUFFER pDnsBuffer,
529 _In_ WORD wMessageLength,
530 _Outptr_ PDNS_RECORD *ppRecord);
531
532 DNS_STATUS
533 WINAPI
534 DnsModifyRecordsInSet_A(
535 _In_opt_ PDNS_RECORD pAddRecords,
536 _In_opt_ PDNS_RECORD pDeleteRecords,
537 _In_ DWORD Options,
538 _In_opt_ HANDLE hCredentials,
539 _Inout_opt_ PIP4_ARRAY pExtraList,
540 _Inout_opt_ PVOID pReserved);
541
542 DNS_STATUS
543 WINAPI
544 DnsModifyRecordsInSet_W(
545 _In_opt_ PDNS_RECORD pAddRecords,
546 _In_opt_ PDNS_RECORD pDeleteRecords,
547 _In_ DWORD Options,
548 _In_opt_ HANDLE hCredentials,
549 _Inout_opt_ PIP4_ARRAY pExtraList,
550 _Inout_opt_ PVOID pReserved);
551
552 DNS_STATUS
553 WINAPI
554 DnsModifyRecordsInSet_UTF8(
555 _In_opt_ PDNS_RECORD pAddRecords,
556 _In_opt_ PDNS_RECORD pDeleteRecords,
557 _In_ DWORD Options,
558 _In_opt_ HANDLE hCredentials,
559 _Inout_opt_ PIP4_ARRAY pExtraList,
560 _Inout_opt_ PVOID pReserved);
561
562 BOOL WINAPI DnsNameCompare_A(_In_ PCSTR, _In_ PCSTR);
563 BOOL WINAPI DnsNameCompare_W(_In_ PCWSTR, _In_ PCWSTR);
564
565 DNS_STATUS
566 WINAPI
567 DnsQuery_A(
568 _In_ PCSTR pszName,
569 _In_ WORD wType,
570 _In_ DWORD Options,
571 _Inout_opt_ PIP4_ARRAY pExtra,
572 _Outptr_result_maybenull_ PDNS_RECORD *ppQueryResults,
573 _Outptr_opt_result_maybenull_ PVOID *pReserved);
574
575 DNS_STATUS
576 WINAPI
577 DnsQuery_W(
578 _In_ PCWSTR pszName,
579 _In_ WORD wType,
580 _In_ DWORD Options,
581 _Inout_opt_ PIP4_ARRAY pExtra,
582 _Outptr_result_maybenull_ PDNS_RECORD *ppQueryResults,
583 _Outptr_opt_result_maybenull_ PVOID *pReserved);
584
585 DNS_STATUS
586 WINAPI
587 DnsQuery_UTF8(
588 _In_ PCSTR pszName,
589 _In_ WORD wType,
590 _In_ DWORD Options,
591 _Inout_opt_ PIP4_ARRAY pExtra,
592 _Outptr_result_maybenull_ PDNS_RECORD *ppQueryResults,
593 _Outptr_opt_result_maybenull_ PVOID *pReserved);
594
595 DNS_STATUS
596 WINAPI
597 DnsQueryConfig(
598 _In_ DNS_CONFIG_TYPE Config,
599 _In_ DWORD Flag,
600 _In_opt_ PWSTR pwsAdapterName,
601 _In_opt_ PVOID pReserved,
602 _Out_writes_bytes_to_opt_(*pBufLen, *pBufLen) PVOID pBuffer,
603 _Inout_ PDWORD pBufLen);
604
605 BOOL WINAPI DnsRecordCompare(_In_ PDNS_RECORD, _In_ PDNS_RECORD);
606
607 PDNS_RECORD
608 WINAPI
609 DnsRecordCopyEx(
610 _In_ PDNS_RECORD pRecord,
611 _In_ DNS_CHARSET CharSetIn,
612 _In_ DNS_CHARSET CharSetOut);
613
614 void WINAPI DnsRecordListFree(_Inout_opt_ PDNS_RECORD, _In_ DNS_FREE_TYPE);
615
616 BOOL
617 WINAPI
618 DnsRecordSetCompare(
619 _Inout_ PDNS_RECORD pRR1,
620 _Inout_ PDNS_RECORD pRR2,
621 _Outptr_opt_result_maybenull_ PDNS_RECORD *ppDiff1,
622 _Outptr_opt_result_maybenull_ PDNS_RECORD *ppDiff2);
623
624 PDNS_RECORD
625 WINAPI
626 DnsRecordSetCopyEx(
627 _In_ PDNS_RECORD pRecordSet,
628 _In_ DNS_CHARSET CharSetIn,
629 _In_ DNS_CHARSET CharSetOut);
630
631 PDNS_RECORD WINAPI DnsRecordSetDetach(_Inout_ PDNS_RECORD);
632 void WINAPI DnsReleaseContextHandle(_In_ HANDLE);
633
634 DNS_STATUS
635 WINAPI
636 DnsReplaceRecordSetA(
637 _In_ PDNS_RECORD pReplaceSet,
638 _In_ DWORD Options,
639 _In_opt_ HANDLE hContext,
640 _Inout_opt_ PIP4_ARRAY pExtraInfo,
641 _Inout_opt_ PVOID pReserved);
642
643 DNS_STATUS
644 WINAPI
645 DnsReplaceRecordSetW(
646 _In_ PDNS_RECORD pReplaceSet,
647 _In_ DWORD Options,
648 _In_opt_ HANDLE hContext,
649 _Inout_opt_ PIP4_ARRAY pExtraInfo,
650 _Inout_opt_ PVOID pReserved);
651
652 DNS_STATUS
653 WINAPI
654 DnsReplaceRecordSetUTF8(
655 _In_ PDNS_RECORD pReplaceSet,
656 _In_ DWORD Options,
657 _In_opt_ HANDLE hContext,
658 _Inout_opt_ PIP4_ARRAY pExtraInfo,
659 _Inout_opt_ PVOID pReserved);
660
661 DNS_STATUS WINAPI DnsValidateName_A(_In_ LPCSTR, _In_ DNS_NAME_FORMAT);
662 DNS_STATUS WINAPI DnsValidateName_W(_In_ LPCWSTR, _In_ DNS_NAME_FORMAT);
663 DNS_STATUS WINAPI DnsValidateName_UTF8(_In_ LPCSTR, _In_ DNS_NAME_FORMAT);
664
665 BOOL
666 WINAPI
667 DnsWriteQuestionToBuffer_W(
668 _Inout_ PDNS_MESSAGE_BUFFER pDnsBuffer,
669 _Inout_ PDWORD pdwBufferSize,
670 _In_ LPWSTR pszName,
671 _In_ WORD wType,
672 _In_ WORD Xid,
673 _In_ BOOL fRecursionDesired);
674
675 BOOL
676 WINAPI
677 DnsWriteQuestionToBuffer_UTF8(
678 _Inout_ PDNS_MESSAGE_BUFFER pDnsBuffer,
679 _Inout_ PDWORD pdwBufferSize,
680 _In_ LPSTR pszName,
681 _In_ WORD wType,
682 _In_ WORD Xid,
683 _In_ BOOL fRecursionDesired);
684
685 #ifdef UNICODE
686 #define DNS_MINFO_DATA DNS_MINFO_DATAW
687 #define PDNS_MINFO_DATA PDNS_MINFO_DATAW
688 #define DNS_MX_DATA DNS_MX_DATAW
689 #define PDNS_MX_DATA PDNS_MX_DATAW
690 #define DNS_NXT_DATA DNS_NXT_DATAW
691 #define PDNS_NXT_DATA PDNS_NXT_DATAW
692 #define DNS_PTR_DATA DNS_PTR_DATAW
693 #define PDNS_PTR_DATA PDNS_PTR_DATAW
694 #define DNS_SIG_DATA DNS_SIG_DATAW
695 #define PDNS_SIG_DATA PDNS_SIG_DATAW
696 #define DNS_SOA_DATA DNS_SOA_DATAW
697 #define PDNS_SOA_DATA PDNS_SOA_DATAW
698 #define DNS_TXT_DATA DNS_TXT_DATAW
699 #define PDNS_TXT_DATA PDNS_TXT_DATAW
700 #define DNS_TKEY_DATA DNS_TKEY_DATAW
701 #define PDNS_TKEY_DATA PDNS_TKEY_DATAW
702 #define DNS_WINSR_DATA DNS_WINSR_DATAW
703 #define PDNS_WINSR_DATA PDNS_WINSR_DATAW
704 #define DnsAcquireContextHandle DnsAcquireContextHandle_W
705 #define DnsModifyRecordsInSet DnsModifyRecordsInSet_W
706 #define DnsNameCompare DnsNameCompare_W
707 #define DnsQuery DnsQuery_W
708 #define DnsReplaceRecordSet DnsReplaceRecordSetW
709 #define DnsValidateName DnsValidateName_W
710 #else
711 #define DNS_MINFO_DATA DNS_MINFO_DATAA
712 #define PDNS_MINFO_DATA PDNS_MINFO_DATAA
713 #define DNS_MX_DATA DNS_MX_DATAA
714 #define PDNS_MX_DATA PDNS_MX_DATAA
715 #define DNS_NXT_DATA DNS_NXT_DATAA
716 #define PDNS_NXT_DATA PDNS_NXT_DATAA
717 #define DNS_PTR_DATA DNS_PTR_DATAA
718 #define PDNS_PTR_DATA PDNS_PTR_DATAA
719 #define DNS_SIG_DATA DNS_SIG_DATAA
720 #define PDNS_SIG_DATA PDNS_SIG_DATAA
721 #define DNS_SOA_DATA DNS_SOA_DATAA
722 #define PDNS_SOA_DATA PDNS_SOA_DATAA
723 #define DNS_TXT_DATA DNS_TXT_DATAA
724 #define PDNS_TXT_DATA PDNS_TXT_DATAA
725 #define DNS_TKEY_DATA DNS_TKEY_DATAA
726 #define PDNS_TKEY_DATA PDNS_TKEY_DATAA
727 #define DNS_WINSR_DATA DNS_WINSR_DATAA
728 #define PDNS_WINSR_DATA PDNS_WINSR_DATAA
729 #define DnsAcquireContextHandle DnsAcquireContextHandle_A
730 #define DnsModifyRecordsInSet DnsModifyRecordsInSet_A
731 #define DnsNameCompare DnsNameCompare_A
732 #define DnsQuery DnsQuery_A
733 #define DnsReplaceRecordSet DnsReplaceRecordSetA
734 #define DnsValidateName DnsValidateName_A
735 #endif
736
737 #endif /* RC_INVOKED */
738
739 #ifdef __cplusplus
740 }
741 #endif
742
743 #endif /* _WINDNS_H */