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