[XDK]
[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 DWORD DNS_STATUS;
37 enum {
38 DNS_TYPE_A=1,
39 DNS_TYPE_NS,
40 DNS_TYPE_MD,
41 DNS_TYPE_MF,
42 DNS_TYPE_CNAME,
43 DNS_TYPE_SOA,
44 DNS_TYPE_MB,
45 DNS_TYPE_MG,
46 DNS_TYPE_MR,
47 DNS_TYPE_NULL,
48 DNS_TYPE_WKS,
49 DNS_TYPE_PTR,
50 DNS_TYPE_HINFO,
51 DNS_TYPE_MINFO,
52 DNS_TYPE_MX,
53 DNS_TYPE_TEXT,
54 DNS_TYPE_RP,
55 DNS_TYPE_AFSDB,
56 DNS_TYPE_X25,
57 DNS_TYPE_ISDN,
58 DNS_TYPE_RT,
59 DNS_TYPE_NSAP,
60 DNS_TYPE_NSAPPTR,
61 DNS_TYPE_SIG,
62 DNS_TYPE_KEY,
63 DNS_TYPE_PX,
64 DNS_TYPE_GPOS,
65 DNS_TYPE_AAAA,
66 DNS_TYPE_LOC,
67 DNS_TYPE_NXT,
68 DNS_TYPE_EID,
69 DNS_TYPE_NIMLOC,
70 DNS_TYPE_SRV,
71 DNS_TYPE_ATMA,
72 DNS_TYPE_NAPTR,
73 DNS_TYPE_KX,
74 DNS_TYPE_CERT,
75 DNS_TYPE_A6,
76 DNS_TYPE_DNAME,
77 DNS_TYPE_SINK,
78 DNS_TYPE_OPT,
79 DNS_TYPE_UINFO=100,
80 DNS_TYPE_UID,
81 DNS_TYPE_GID,
82 DNS_TYPE_UNSPEC,
83 DNS_TYPE_ADDRS=248,
84 DNS_TYPE_TKEY,
85 DNS_TYPE_TSIG,
86 DNS_TYPE_IXFR,
87 DNS_TYPE_AXFR,
88 DNS_TYPE_MAILB,
89 DNS_TYPE_MAILA,
90 DNS_TYPE_ALL,
91 DNS_TYPE_ANY=DNS_TYPE_ALL
92 };
93 typedef enum _DNS_CHARSET
94 {
95 DnsCharSetUnknown,
96 DnsCharSetUnicode,
97 DnsCharSetUtf8,
98 DnsCharSetAnsi
99 } DNS_CHARSET;
100 typedef enum
101 {
102 DnsConfigPrimaryDomainName_W,
103 DnsConfigPrimaryDomainName_A,
104 DnsConfigPrimaryDomainName_UTF8,
105 DnsConfigAdapterDomainName_W,
106 DnsConfigAdapterDomainName_A,
107 DnsConfigAdapterDomainName_UTF8,
108 DnsConfigDnsServerList,
109 DnsConfigSearchList,
110 DnsConfigAdapterInfo,
111 DnsConfigPrimaryHostNameRegistrationEnabled,
112 DnsConfigAdapterHostNameRegistrationEnabled,
113 DnsConfigAddressRegistrationMaxCount,
114 DnsConfigHostName_W,
115 DnsConfigHostName_A,
116 DnsConfigHostName_UTF8,
117 DnsConfigFullHostName_W,
118 DnsConfigFullHostName_A,
119 DnsConfigFullHostName_UTF8
120 } DNS_CONFIG_TYPE;
121 typedef enum
122 {
123 DnsFreeFlat = 0,
124 DnsFreeRecordList,
125 DnsFreeParsedMessageFields
126 } DNS_FREE_TYPE;
127 typedef enum _DNS_NAME_FORMAT
128 {
129 DnsNameDomain,
130 DnsNameDomainLabel,
131 DnsNameHostnameFull,
132 DnsNameHostnameLabel,
133 DnsNameWildcard,
134 DnsNameSrvRecord
135 } DNS_NAME_FORMAT;
136 typedef enum
137 {
138 DnsSectionQuestion,
139 DnsSectionAnswer,
140 DnsSectionAuthority,
141 DnsSectionAdditional
142 } DNS_SECTION;
143 typedef struct _IP4_ARRAY {
144 DWORD AddrCount;
145 IP4_ADDRESS AddrArray[1];
146 } IP4_ARRAY, *PIP4_ARRAY;
147 typedef struct {
148 DWORD IP6Dword[4];
149 } IP6_ADDRESS, *PIP6_ADDRESS, DNS_IP6_ADDRESS, *PDNS_IP6_ADDRESS;
150 typedef struct _DNS_HEADER {
151 WORD Xid;
152 BYTE RecursionDesired;
153 BYTE Truncation;
154 BYTE Authoritative;
155 BYTE Opcode;
156 BYTE IsResponse;
157 BYTE ResponseCode;
158 BYTE Reserved;
159 BYTE RecursionAvailable;
160 WORD QuestionCount;
161 WORD AnswerCount;
162 WORD NameServerCount;
163 WORD AdditionalCount;
164 } DNS_HEADER, *PDNS_HEADER;
165 typedef struct _DNS_MESSAGE_BUFFER {
166 DNS_HEADER MessageHead;
167 CHAR MessageBody[1];
168 } DNS_MESSAGE_BUFFER, *PDNS_MESSAGE_BUFFER;
169 typedef struct _DnsRecordFlags {
170 DWORD Section :2;
171 DWORD Delete :1;
172 DWORD CharSet :2;
173 DWORD Unused :3;
174 DWORD Reserved :24;
175 } DNS_RECORD_FLAGS;
176 #define DNSREC_QUESTION 0
177 #define DNSREC_ANSWER 1
178 #define DNSREC_AUTHORITY 2
179 #define DNSREC_ADDITIONAL 3
180 typedef struct {
181 IP4_ADDRESS IpAddress;
182 } DNS_A_DATA, *PDNS_A_DATA;
183 typedef struct {
184 DNS_IP6_ADDRESS Ip6Address;
185 } DNS_AAAA_DATA, *PDNS_AAAA_DATA;
186 #define DNS_ATMA_MAX_ADDR_LENGTH 20
187 typedef struct {
188 BYTE AddressType;
189 BYTE Address[DNS_ATMA_MAX_ADDR_LENGTH];
190 } DNS_ATMA_DATA, *PDNS_ATMA_DATA;
191 typedef struct {
192 WORD wFlags;
193 BYTE chProtocol;
194 BYTE chAlgorithm;
195 BYTE Key[1];
196 } DNS_KEY_DATA, *PDNS_KEY_DATA;
197 typedef struct {
198 WORD wVersion;
199 WORD wSize;
200 WORD wHorPrec;
201 WORD wVerPrec;
202 DWORD dwLatitude;
203 DWORD dwLongitude;
204 DWORD dwAltitude;
205 } DNS_LOC_DATA, *PDNS_LOC_DATA;
206 typedef struct {
207 LPSTR pNameMailbox;
208 LPSTR pNameErrorsMailbox;
209 } DNS_MINFO_DATAA, *PDNS_MINFO_DATAA;
210 typedef struct {
211 LPWSTR pNameMailbox;
212 LPWSTR pNameErrorsMailbox;
213 } DNS_MINFO_DATAW, *PDNS_MINFO_DATAW;
214 typedef struct {
215 LPSTR pNameExchange;
216 WORD wPreference;
217 WORD Pad;
218 } DNS_MX_DATAA, *PDNS_MX_DATAA;
219 typedef struct {
220 LPWSTR pNameExchange;
221 WORD wPreference;
222 WORD Pad;
223 } DNS_MX_DATAW, *PDNS_MX_DATAW;
224 typedef struct {
225 DWORD dwByteCount;
226 BYTE Data[1];
227 } DNS_NULL_DATA, *PDNS_NULL_DATA;
228 typedef struct {
229 LPSTR pNameNext;
230 WORD wNumTypes;
231 WORD wTypes[1];
232 } DNS_NXT_DATAA, *PDNS_NXT_DATAA;
233 typedef struct {
234 LPWSTR pNameNext;
235 WORD wNumTypes;
236 WORD wTypes[1];
237 } DNS_NXT_DATAW, *PDNS_NXT_DATAW;
238 typedef struct {
239 LPSTR pNameHost;
240 } DNS_PTR_DATAA, *PDNS_PTR_DATAA;
241 typedef struct {
242 LPWSTR pNameHost;
243 } DNS_PTR_DATAW, *PDNS_PTR_DATAW;
244 typedef struct {
245 LPSTR pNameSigner;
246 WORD wTypeCovered;
247 BYTE chAlgorithm;
248 BYTE chLabelCount;
249 DWORD dwOriginalTtl;
250 DWORD dwExpiration;
251 DWORD dwTimeSigned;
252 WORD wKeyTag;
253 WORD Pad;
254 BYTE Signature[1];
255 } DNS_SIG_DATAA, *PDNS_SIG_DATAA;
256 typedef struct {
257 LPWSTR pNameSigner;
258 WORD wTypeCovered;
259 BYTE chAlgorithm;
260 BYTE chLabelCount;
261 DWORD dwOriginalTtl;
262 DWORD dwExpiration;
263 DWORD dwTimeSigned;
264 WORD wKeyTag;
265 WORD Pad;
266 BYTE Signature[1];
267 } DNS_SIG_DATAW, *PDNS_SIG_DATAW;
268 typedef struct {
269 LPSTR pNamePrimaryServer;
270 LPSTR pNameAdministrator;
271 DWORD dwSerialNo;
272 DWORD dwRefresh;
273 DWORD dwRetry;
274 DWORD dwExpire;
275 DWORD dwDefaultTtl;
276 } DNS_SOA_DATAA, *PDNS_SOA_DATAA;
277 typedef struct {
278 LPWSTR pNamePrimaryServer;
279 LPWSTR pNameAdministrator;
280 DWORD dwSerialNo;
281 DWORD dwRefresh;
282 DWORD dwRetry;
283 DWORD dwExpire;
284 DWORD dwDefaultTtl;
285 } DNS_SOA_DATAW, *PDNS_SOA_DATAW;
286 typedef struct {
287 LPSTR pNameTarget;
288 WORD wPriority;
289 WORD wWeight;
290 WORD wPort;
291 WORD Pad;
292 } DNS_SRV_DATAA, *PDNS_SRV_DATAA;
293 typedef struct {
294 LPWSTR pNameTarget;
295 WORD wPriority;
296 WORD wWeight;
297 WORD wPort;
298 WORD Pad;
299 } DNS_SRV_DATAW, *PDNS_SRV_DATAW;
300 typedef struct {
301 DWORD dwStringCount;
302 LPSTR pStringArray[1];
303 } DNS_TXT_DATAA, *PDNS_TXT_DATAA;
304 typedef struct {
305 DWORD dwStringCount;
306 LPWSTR pStringArray[1];
307 } DNS_TXT_DATAW, *PDNS_TXT_DATAW;
308 typedef struct {
309 LPSTR pNameAlgorithm;
310 PBYTE pAlgorithmPacket;
311 PBYTE pKey;
312 PBYTE pOtherData;
313 DWORD dwCreateTime;
314 DWORD dwExpireTime;
315 WORD wMode;
316 WORD wError;
317 WORD wKeyLength;
318 WORD wOtherLength;
319 UCHAR cAlgNameLength;
320 BOOL bPacketPointers;
321 } DNS_TKEY_DATAA, *PDNS_TKEY_DATAA;
322 typedef struct {
323 LPWSTR pNameAlgorithm;
324 PBYTE pAlgorithmPacket;
325 PBYTE pKey;
326 PBYTE pOtherData;
327 DWORD dwCreateTime;
328 DWORD dwExpireTime;
329 WORD wMode;
330 WORD wError;
331 WORD wKeyLength;
332 WORD wOtherLength;
333 UCHAR cAlgNameLength;
334 BOOL bPacketPointers;
335 } DNS_TKEY_DATAW, *PDNS_TKEY_DATAW;
336 typedef struct {
337 LPSTR pNameAlgorithm;
338 PBYTE pAlgorithmPacket;
339 PBYTE pSignature;
340 PBYTE pOtherData;
341 LONGLONG i64CreateTime;
342 WORD wFudgeTime;
343 WORD wOriginalXid;
344 WORD wError;
345 WORD wSigLength;
346 WORD wOtherLength;
347 UCHAR cAlgNameLength;
348 BOOL bPacketPointers;
349 } DNS_TSIG_DATAA, *PDNS_TSIG_DATAA;
350 typedef struct {
351 LPWSTR pNameAlgorithm;
352 PBYTE pAlgorithmPacket;
353 PBYTE pSignature;
354 PBYTE pOtherData;
355 LONGLONG i64CreateTime;
356 WORD wFudgeTime;
357 WORD wOriginalXid;
358 WORD wError;
359 WORD wSigLength;
360 WORD wOtherLength;
361 UCHAR cAlgNameLength;
362 BOOL bPacketPointers;
363 } DNS_TSIG_DATAW, *PDNS_TSIG_DATAW;
364 typedef struct {
365 DWORD dwMappingFlag;
366 DWORD dwLookupTimeout;
367 DWORD dwCacheTimeout;
368 DWORD cWinsServerCount;
369 IP4_ADDRESS WinsServers[1];
370 } DNS_WINS_DATA, *PDNS_WINS_DATA;
371 typedef struct {
372 DWORD dwMappingFlag;
373 DWORD dwLookupTimeout;
374 DWORD dwCacheTimeout;
375 LPSTR pNameResultDomain;
376 } DNS_WINSR_DATAA, *PDNS_WINSR_DATAA;
377 typedef struct {
378 DWORD dwMappingFlag;
379 DWORD dwLookupTimeout;
380 DWORD dwCacheTimeout;
381 LPWSTR pNameResultDomain;
382 } DNS_WINSR_DATAW, *PDNS_WINSR_DATAW;
383 typedef struct _DNS_WIRE_QUESTION {
384 WORD QuestionType;
385 WORD QuestionClass;
386 } DNS_WIRE_QUESTION, *PDNS_WIRE_QUESTION;
387 typedef struct _DNS_WIRE_RECORD {
388 WORD RecordType;
389 WORD RecordClass;
390 DWORD TimeToLive;
391 WORD DataLength;
392 } DNS_WIRE_RECORD, *PDNS_WIRE_RECORD;
393 typedef struct {
394 IP4_ADDRESS IpAddress;
395 UCHAR chProtocol;
396 BYTE BitMask[1];
397 } DNS_WKS_DATA, *PDNS_WKS_DATA;
398 typedef struct _DnsRecordA {
399 struct _DnsRecordA* pNext;
400 LPSTR pName;
401 WORD wType;
402 WORD wDataLength;
403 union {
404 DWORD DW;
405 DNS_RECORD_FLAGS S;
406 } Flags;
407 DWORD dwTtl;
408 DWORD dwReserved;
409 union {
410 DNS_A_DATA A;
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;
417 DNS_NULL_DATA Null;
418 DNS_WKS_DATA WKS, Wks;
419 DNS_AAAA_DATA AAAA;
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;
429 } Data;
430 } DNS_RECORDA, *PDNS_RECORDA;
431 typedef struct _DnsRecordW {
432 struct _DnsRecordW* pNext;
433 LPWSTR pName;
434 WORD wType;
435 WORD wDataLength;
436 union {
437 DWORD DW;
438 DNS_RECORD_FLAGS S;
439 } Flags;
440 DWORD dwTtl;
441 DWORD dwReserved;
442 union {
443 DNS_A_DATA A;
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;
450 DNS_NULL_DATA Null;
451 DNS_WKS_DATA WKS, Wks;
452 DNS_AAAA_DATA AAAA;
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;
462 } Data;
463 } DNS_RECORDW, *PDNS_RECORDW;
464
465 #ifdef UNICODE
466 #define DNS_RECORD DNS_RECORDW
467 #define PDNS_RECORD PDNS_RECORDW
468 #else
469 #define DNS_RECORD DNS_RECORDA
470 #define PDNS_RECORD PDNS_RECORDA
471 #endif
472
473 typedef struct _DnsRRSet {
474 PDNS_RECORD pFirstRR;
475 PDNS_RECORD pLastRR;
476 } DNS_RRSET, *PDNS_RRSET;
477
478 #define DNS_RRSET_INIT( rrset ) \
479 { \
480 PDNS_RRSET _prrset = &(rrset); \
481 _prrset->pFirstRR = NULL; \
482 _prrset->pLastRR = (PDNS_RECORD) &_prrset->pFirstRR; \
483 }
484
485 #define DNS_RRSET_ADD( rrset, pnewRR ) \
486 { \
487 PDNS_RRSET _prrset = &(rrset); \
488 PDNS_RECORD _prrnew = (pnewRR); \
489 _prrset->pLastRR->pNext = _prrnew; \
490 _prrset->pLastRR = _prrnew; \
491 }
492
493 #define DNS_RRSET_TERMINATE( rrset ) \
494 { \
495 PDNS_RRSET _prrset = &(rrset); \
496 _prrset->pLastRR->pNext = NULL; \
497 }
498
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);
527
528 #ifdef UNICODE
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
553 #else
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
578 #endif
579
580 #endif /* RC_INVOKED */
581
582 #ifdef __cplusplus
583 }
584 #endif
585
586 #endif /* _WINDNS_H */