Import DnsNameCompare, DnsValidateName, DnsRecord* functions from Wine.
[reactos.git] / reactos / 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 #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 WINAPI DnsAcquireContextHandle_A(DWORD,PVOID,HANDLE*);
505 DNS_STATUS WINAPI DnsAcquireContextHandle_W(DWORD,PVOID,HANDLE*);
506 DNS_STATUS WINAPI DnsExtractRecordsFromMessage_W(PDNS_MESSAGE_BUFFER,WORD,PDNS_RECORD*);
507 DNS_STATUS WINAPI DnsExtractRecordsFromMessage_UTF8(PDNS_MESSAGE_BUFFER,WORD,PDNS_RECORD*);
508 DNS_STATUS WINAPI DnsModifyRecordsInSet_A(PDNS_RECORD,PDNS_RECORD,DWORD,HANDLE,PIP4_ARRAY,PVOID);
509 DNS_STATUS WINAPI DnsModifyRecordsInSet_W(PDNS_RECORD,PDNS_RECORD,DWORD,HANDLE,PIP4_ARRAY,PVOID);
510 DNS_STATUS WINAPI DnsModifyRecordsInSet_UTF8(PDNS_RECORD,PDNS_RECORD,DWORD,HANDLE,PIP4_ARRAY,PVOID);
511 BOOL WINAPI DnsNameCompare_A(PCSTR,PCSTR);
512 BOOL WINAPI DnsNameCompare_W(PCWSTR,PCWSTR);
513 DNS_STATUS WINAPI DnsQuery_A(PCSTR,WORD,DWORD,PIP4_ARRAY,PDNS_RECORD*,PVOID*);
514 DNS_STATUS WINAPI DnsQuery_W(PCWSTR,WORD,DWORD,PIP4_ARRAY,PDNS_RECORD*,PVOID*);
515 DNS_STATUS WINAPI DnsQuery_UTF8(PCSTR,WORD,DWORD,PIP4_ARRAY,PDNS_RECORD*,PVOID*);
516 DNS_STATUS WINAPI DnsQueryConfig(DNS_CONFIG_TYPE,DWORD,PWSTR,PVOID,PVOID,PDWORD);
517 BOOL WINAPI DnsRecordCompare(PDNS_RECORD,PDNS_RECORD);
518 PDNS_RECORD WINAPI DnsRecordCopyEx(PDNS_RECORD,DNS_CHARSET,DNS_CHARSET);
519 void WINAPI DnsRecordListFree(PDNS_RECORD,DNS_FREE_TYPE);
520 BOOL WINAPI DnsRecordSetCompare(PDNS_RECORD,PDNS_RECORD,PDNS_RECORD*,PDNS_RECORD*);
521 PDNS_RECORD WINAPI DnsRecordSetCopyEx(PDNS_RECORD,DNS_CHARSET,DNS_CHARSET);
522 PDNS_RECORD WINAPI DnsRecordSetDetach(PDNS_RECORD);
523 void WINAPI DnsReleaseContextHandle(HANDLE);
524 DNS_STATUS WINAPI DnsReplaceRecordSetA(PDNS_RECORD,DWORD,HANDLE,PIP4_ARRAY,PVOID);
525 DNS_STATUS WINAPI DnsReplaceRecordSetW(PDNS_RECORD,DWORD,HANDLE,PIP4_ARRAY,PVOID);
526 DNS_STATUS WINAPI DnsReplaceRecordSetUTF8(PDNS_RECORD,DWORD,HANDLE,PIP4_ARRAY,PVOID);
527 DNS_STATUS WINAPI DnsValidateName_A(LPCSTR,DNS_NAME_FORMAT);
528 DNS_STATUS WINAPI DnsValidateName_W(LPCWSTR, DNS_NAME_FORMAT);
529 DNS_STATUS WINAPI DnsValidateName_UTF8(LPCSTR,DNS_NAME_FORMAT);
530 BOOL WINAPI DnsWriteQuestionToBuffer_W(PDNS_MESSAGE_BUFFER,LPDWORD,LPWSTR,WORD,WORD,BOOL);
531 BOOL WINAPI DnsWriteQuestionToBuffer_UTF8(PDNS_MESSAGE_BUFFER,LPDWORD,LPSTR,WORD,WORD,BOOL);
532
533 #ifdef UNICODE
534 #define DNS_MINFO_DATA DNS_MINFO_DATAW
535 #define PDNS_MINFO_DATA PDNS_MINFO_DATAW
536 #define DNS_MX_DATA DNS_MX_DATAW
537 #define PDNS_MX_DATA PDNS_MX_DATAW
538 #define DNS_NXT_DATA DNS_NXT_DATAW
539 #define PDNS_NXT_DATA PDNS_NXT_DATAW
540 #define DNS_PTR_DATA DNS_PTR_DATAW
541 #define PDNS_PTR_DATA PDNS_PTR_DATAW
542 #define DNS_SIG_DATA DNS_SIG_DATAW
543 #define PDNS_SIG_DATA PDNS_SIG_DATAW
544 #define DNS_SOA_DATA DNS_SOA_DATAW
545 #define PDNS_SOA_DATA PDNS_SOA_DATAW
546 #define DNS_TXT_DATA DNS_TXT_DATAW
547 #define PDNS_TXT_DATA PDNS_TXT_DATAW
548 #define DNS_TKEY_DATA DNS_TKEY_DATAW
549 #define PDNS_TKEY_DATA PDNS_TKEY_DATAW
550 #define DNS_WINSR_DATA DNS_WINSR_DATAW
551 #define PDNS_WINSR_DATA PDNS_WINSR_DATAW
552 #define DnsAcquireContextHandle DnsAcquireContextHandle_W
553 #define DnsModifyRecordsInSet DnsModifyRecordsInSet_W
554 #define DnsNameCompare DnsNameCompare_W
555 #define DnsQuery DnsQuery_W
556 #define DnsReplaceRecordSet DnsReplaceRecordSetW
557 #define DnsValidateName DnsValidateName_W
558 #else
559 #define DNS_MINFO_DATA DNS_MINFO_DATAA
560 #define PDNS_MINFO_DATA PDNS_MINFO_DATAA
561 #define DNS_MX_DATA DNS_MX_DATAA
562 #define PDNS_MX_DATA PDNS_MX_DATAA
563 #define DNS_NXT_DATA DNS_NXT_DATAA
564 #define PDNS_NXT_DATA PDNS_NXT_DATAA
565 #define DNS_PTR_DATA DNS_PTR_DATAA
566 #define PDNS_PTR_DATA PDNS_PTR_DATAA
567 #define DNS_SIG_DATA DNS_SIG_DATAA
568 #define PDNS_SIG_DATA PDNS_SIG_DATAA
569 #define DNS_SOA_DATA DNS_SOA_DATAA
570 #define PDNS_SOA_DATA PDNS_SOA_DATAA
571 #define DNS_TXT_DATA DNS_TXT_DATAA
572 #define PDNS_TXT_DATA PDNS_TXT_DATAA
573 #define DNS_TKEY_DATA DNS_TKEY_DATAA
574 #define PDNS_TKEY_DATA PDNS_TKEY_DATAA
575 #define DNS_WINSR_DATA DNS_WINSR_DATAA
576 #define PDNS_WINSR_DATA PDNS_WINSR_DATAA
577 #define DnsAcquireContextHandle DnsAcquireContextHandle_A
578 #define DnsModifyRecordsInSet DnsModifyRecordsInSet_A
579 #define DnsNameCompare DnsNameCompare_A
580 #define DnsQuery DnsQuery_A
581 #define DnsReplaceRecordSet DnsReplaceRecordSetA
582 #define DnsValidateName DnsValidateName_A
583 #endif
584
585 #endif /* RC_INVOKED */
586
587 #ifdef __cplusplus
588 }
589 #endif
590
591 #endif /* _WINDNS_H */