clusapi: Add the clusapi.h public header.
[wine] / include / windns.h
1 /*
2  * DNS support
3  *
4  * Copyright (C) 2006 Matthew Kehrer
5  * 
6  * This library is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public
8  * License as published by the Free Software Foundation; either
9  * version 2.1 of the License, or (at your option) any later version.
10  *
11  * This library is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14  * Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public
17  * License along with this library; if not, write to the Free Software
18  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
19  */
20
21 #ifndef __WINE_WINDNS_H
22 #define __WINE_WINDNS_H
23
24 #ifdef __cplusplus
25 extern "C" {
26 #endif
27
28 #define DNS_TYPE_ZERO       0x0000
29 #define DNS_TYPE_A          0x0001
30 #define DNS_TYPE_NS         0x0002
31 #define DNS_TYPE_MD         0x0003
32 #define DNS_TYPE_MF         0x0004
33 #define DNS_TYPE_CNAME      0x0005
34 #define DNS_TYPE_SOA        0x0006
35 #define DNS_TYPE_MB         0x0007
36 #define DNS_TYPE_MG         0x0008
37 #define DNS_TYPE_MR         0x0009
38 #define DNS_TYPE_NULL       0x000a
39 #define DNS_TYPE_WKS        0x000b
40 #define DNS_TYPE_PTR        0x000c
41 #define DNS_TYPE_HINFO      0x000d
42 #define DNS_TYPE_MINFO      0x000e
43 #define DNS_TYPE_MX         0x000f
44 #define DNS_TYPE_TEXT       0x0010
45 #define DNS_TYPE_RP         0x0011
46 #define DNS_TYPE_AFSDB      0x0012
47 #define DNS_TYPE_X25        0x0013
48 #define DNS_TYPE_ISDN       0x0014
49 #define DNS_TYPE_RT         0x0015
50 #define DNS_TYPE_NSAP       0x0016
51 #define DNS_TYPE_NSAPPTR    0x0017
52 #define DNS_TYPE_SIG        0x0018
53 #define DNS_TYPE_KEY        0x0019
54 #define DNS_TYPE_PX         0x001a
55 #define DNS_TYPE_GPOS       0x001b
56 #define DNS_TYPE_AAAA       0x001c
57 #define DNS_TYPE_LOC        0x001d
58 #define DNS_TYPE_NXT        0x001e
59 #define DNS_TYPE_EID        0x001f
60 #define DNS_TYPE_NIMLOC     0x0020
61 #define DNS_TYPE_SRV        0x0021
62 #define DNS_TYPE_ATMA       0x0022
63 #define DNS_TYPE_NAPTR      0x0023
64 #define DNS_TYPE_KX         0x0024
65 #define DNS_TYPE_CERT       0x0025
66 #define DNS_TYPE_A6         0x0026
67 #define DNS_TYPE_DNAME      0x0027
68 #define DNS_TYPE_SINK       0x0028
69 #define DNS_TYPE_OPT        0x0029
70 #define DNS_TYPE_UINFO      0x0064
71 #define DNS_TYPE_UID        0x0065
72 #define DNS_TYPE_GID        0x0066
73 #define DNS_TYPE_UNSPEC     0x0067
74 #define DNS_TYPE_ADDRS      0x00f8
75 #define DNS_TYPE_TKEY       0x00f9
76 #define DNS_TYPE_TSIG       0x00fa
77 #define DNS_TYPE_IXFR       0x00fb
78 #define DNS_TYPE_AXFR       0x00fc
79 #define DNS_TYPE_MAILB      0x00fd
80 #define DNS_TYPE_MAILA      0x00fe
81 #define DNS_TYPE_ALL        0x00ff
82 #define DNS_TYPE_ANY        0x00ff
83
84 #define DNS_TYPE_WINS       0xff01
85 #define DNS_TYPE_WINSR      0xff02
86 #define DNS_TYPE_NBSTAT     (DNS_TYPE_WINSR)
87
88 #define DNS_QUERY_STANDARD                  0x00000000
89 #define DNS_QUERY_ACCEPT_TRUNCATED_RESPONSE 0x00000001
90 #define DNS_QUERY_USE_TCP_ONLY              0x00000002
91 #define DNS_QUERY_NO_RECURSION              0x00000004
92 #define DNS_QUERY_BYPASS_CACHE              0x00000008
93 #define DNS_QUERY_NO_WIRE_QUERY             0x00000010
94 #define DNS_QUERY_NO_LOCAL_NAME             0x00000020
95 #define DNS_QUERY_NO_HOSTS_FILE             0x00000040
96 #define DNS_QUERY_NO_NETBT                  0x00000080
97 #define DNS_QUERY_WIRE_ONLY                 0x00000100
98 #define DNS_QUERY_RETURN_MESSAGE            0x00000200
99 #define DNS_QUERY_TREAT_AS_FQDN             0x00001000
100 #define DNS_QUERY_DONT_RESET_TTL_VALUES     0x00100000
101 #define DNS_QUERY_RESERVED                  0xff000000
102
103 typedef enum _DNS_NAME_FORMAT
104 {
105     DnsNameDomain,
106     DnsNameDomainLabel,
107     DnsNameHostnameFull,
108     DnsNameHostnameLabel,
109     DnsNameWildcard,
110     DnsNameSrvRecord
111 } DNS_NAME_FORMAT;
112
113 typedef enum _DNS_FREE_TYPE
114 {
115     DnsFreeFlat,
116     DnsFreeRecordList,
117     DnsFreeParsedMessageFields
118 } DNS_FREE_TYPE;
119
120 typedef enum _DNS_CHARSET
121 {
122     DnsCharSetUnknown,
123     DnsCharSetUnicode,
124     DnsCharSetUtf8,
125     DnsCharSetAnsi
126 } DNS_CHARSET;
127
128 typedef enum _DNS_CONFIG_TYPE
129 {
130     DnsConfigPrimaryDomainName_W,
131     DnsConfigPrimaryDomainName_A,
132     DnsConfigPrimaryDomainName_UTF8,
133     DnsConfigAdapterDomainName_W,
134     DnsConfigAdapterDomainName_A,
135     DnsConfigAdapterDomainName_UTF8,
136     DnsConfigDnsServerList,
137     DnsConfigSearchList,
138     DnsConfigAdapterInfo,
139     DnsConfigPrimaryHostNameRegistrationEnabled,
140     DnsConfigAdapterHostNameRegistrationEnabled,
141     DnsConfigAddressRegistrationMaxCount,
142     DnsConfigHostName_W,
143     DnsConfigHostName_A,
144     DnsConfigHostName_UTF8,
145     DnsConfigFullHostName_W,
146     DnsConfigFullHostName_A,
147     DnsConfigFullHostName_UTF8
148 } DNS_CONFIG_TYPE;
149
150 typedef enum _DnsSection
151 {
152     DnsSectionQuestion,
153     DnsSectionAnswer,
154     DnsSectionAuthority,
155     DnsSectionAddtional
156 } DNS_SECTION;
157
158 typedef long DNS_STATUS;
159 typedef DWORD IP4_ADDRESS;
160
161 typedef struct
162 {
163     DWORD IP6Dword[4];
164 } IP6_ADDRESS, *PIP6_ADDRESS, DNS_IP6_ADDRESS, *PDNS_IP6_ADDRESS;
165
166 typedef struct _IP4_ARRAY
167 {
168     DWORD AddrCount;
169     IP4_ADDRESS AddrArray[1];
170 } IP4_ARRAY, *PIP4_ARRAY;
171
172 typedef struct _DNS_HEADER
173 {
174     WORD Xid;
175     BYTE RecursionDesired;
176     BYTE Truncation;
177     BYTE Authoritative;
178     BYTE Opcode;
179     BYTE IsResponse;
180     BYTE ResponseCode;
181     BYTE Reserved;
182     BYTE RecursionAvailable;
183     WORD QuestionCount;
184     WORD AnswerCount;
185     WORD NameServerCount;
186     WORD AdditionalCount;
187 } DNS_HEADER, *PDNS_HEADER;
188
189 typedef struct _DNS_MESSAGE_BUFFER
190 {
191     DNS_HEADER MessageHead;
192     CHAR MessageBody[1];
193 } DNS_MESSAGE_BUFFER, *PDNS_MESSAGE_BUFFER;
194
195 typedef struct
196 {
197     IP4_ADDRESS IpAddress;
198 } DNS_A_DATA, *PDNS_A_DATA;
199
200 typedef struct _DnsRecordFlags
201 {
202     DWORD Section :2;
203     DWORD Delete :1;
204     DWORD CharSet :2;
205     DWORD Unused :3;
206     DWORD Reserved :24;
207 } DNS_RECORD_FLAGS;
208
209 typedef struct
210 {
211     LPSTR pNamePrimaryServer;
212     LPSTR pNameAdministrator;
213     DWORD dwSerialNo;
214     DWORD dwRefresh;
215     DWORD dwRetry;
216     DWORD dwExpire;
217     DWORD dwDefaultTtl;
218 } DNS_SOA_DATAA, *PDNS_SOA_DATAA;
219
220 typedef struct
221 {
222     LPWSTR pNamePrimaryServer;
223     LPWSTR pNameAdministrator;
224     DWORD dwSerialNo;
225     DWORD dwRefresh;
226     DWORD dwRetry;
227     DWORD dwExpire;
228     DWORD dwDefaultTtl;
229 } DNS_SOA_DATAW, *PDNS_SOA_DATAW;
230
231 DECL_WINELIB_TYPE_AW(DNS_SOA_DATA)
232 DECL_WINELIB_TYPE_AW(PDNS_SOA_DATA)
233
234 typedef struct
235 {
236     LPSTR pNameHost;
237 } DNS_PTR_DATAA, *PDNS_PTR_DATAA;
238
239 typedef struct
240 {
241     LPWSTR pNameHost;
242 } DNS_PTR_DATAW, *PDNS_PTR_DATAW;
243
244 DECL_WINELIB_TYPE_AW(DNS_PTR_DATA)
245 DECL_WINELIB_TYPE_AW(PDNS_PTR_DATA)
246
247 typedef struct
248 {
249     LPSTR pNameMailbox;
250     LPSTR pNameErrorsMailbox;
251 } DNS_MINFO_DATAA, *PDNS_MINFO_DATAA;
252
253 typedef struct
254 {
255     LPWSTR pNameMailbox;
256     LPWSTR pNameErrorsMailbox;
257 } DNS_MINFO_DATAW, *PDNS_MINFO_DATAW;
258
259 DECL_WINELIB_TYPE_AW(DNS_MINFO_DATA)
260 DECL_WINELIB_TYPE_AW(PDNS_MINFO_DATA)
261
262 typedef struct
263 {
264     LPSTR pNameExchange;
265     WORD wPreference;
266     WORD Pad;
267 } DNS_MX_DATAA, *PDNS_MX_DATAA;
268
269 typedef struct
270 {
271     LPWSTR pNameExchange;
272     WORD wPreference;
273     WORD Pad;
274 } DNS_MX_DATAW, *PDNS_MX_DATAW;
275
276 DECL_WINELIB_TYPE_AW(DNS_MX_DATA)
277 DECL_WINELIB_TYPE_AW(PDNS_MX_DATA)
278
279 typedef struct
280 {
281     DWORD dwStringCount;
282     LPSTR pStringArray[1];
283 } DNS_TXT_DATAA, *PDNS_TXT_DATAA;
284
285 typedef struct
286 {
287     DWORD dwStringCount;
288     LPWSTR pStringArray[1];
289 } DNS_TXT_DATAW, *PDNS_TXT_DATAW;
290
291 DECL_WINELIB_TYPE_AW(DNS_TXT_DATA)
292 DECL_WINELIB_TYPE_AW(PDNS_TXT_DATA)
293
294 typedef struct
295 {
296     DWORD dwByteCount;
297     BYTE Data[1];
298 } DNS_NULL_DATA, *PDNS_NULL_DATA;
299
300 typedef struct
301 {
302     IP4_ADDRESS IpAddress;
303     UCHAR chProtocol;
304     BYTE BitMask[1];
305 } DNS_WKS_DATA, *PDNS_WKS_DATA;
306
307 typedef struct
308 {
309     DNS_IP6_ADDRESS Ip6Address;
310 } DNS_AAAA_DATA, *PDNS_AAAA_DATA;
311
312 typedef struct
313 {
314     WORD wFlags;
315     BYTE chProtocol;
316     BYTE chAlgorithm;
317     BYTE Key[1];
318 } DNS_KEY_DATA, *PDNS_KEY_DATA;
319
320 typedef struct
321 {
322     WORD wVersion;
323     WORD wSize;
324     WORD wHorPrec;
325     WORD wVerPrec;
326     DWORD dwLatitude;
327     DWORD dwLongitude;
328     DWORD dwAltitude;
329 } DNS_LOC_DATA, *PDNS_LOC_DATA;
330
331 typedef struct
332 {
333     LPSTR pNameSigner;
334     WORD wTypeCovered;
335     BYTE chAlgorithm;
336     BYTE chLabelCount;
337     DWORD dwOriginalTtl;
338     DWORD dwExpiration;
339     DWORD dwTimeSigned;
340     WORD wKeyTag;
341     WORD Pad;
342     BYTE Signature[1];
343 } DNS_SIG_DATAA, *PDNS_SIG_DATAA;
344
345 typedef struct
346 {
347     LPWSTR pNameSigner;
348     WORD wTypeCovered;
349     BYTE chAlgorithm;
350     BYTE chLabelCount;
351     DWORD dwOriginalTtl;
352     DWORD dwExpiration;
353     DWORD dwTimeSigned;
354     WORD wKeyTag;
355     WORD Pad;
356     BYTE Signature[1];
357 } DNS_SIG_DATAW, *PDNS_SIG_DATAW;
358
359 DECL_WINELIB_TYPE_AW(DNS_SIG_DATA)
360 DECL_WINELIB_TYPE_AW(PDNS_SIG_DATA)
361
362 #define DNS_ATMA_MAX_ADDR_LENGTH 20
363
364 typedef struct
365 {
366     BYTE AddressType;
367     BYTE Address[DNS_ATMA_MAX_ADDR_LENGTH];
368 } DNS_ATMA_DATA, *PDNS_ATMA_DATA;
369
370 typedef struct
371 {
372     LPSTR pNameNext;
373     WORD wNumTypes;
374     WORD wTypes[1];
375 } DNS_NXT_DATAA, *PDNS_NXT_DATAA;
376
377 typedef struct
378 {
379     LPWSTR pNameNext;
380     WORD wNumTypes;
381     WORD wTypes[1];
382 } DNS_NXT_DATAW, *PDNS_NXT_DATAW;
383
384 DECL_WINELIB_TYPE_AW(DNS_NXT_DATA)
385 DECL_WINELIB_TYPE_AW(PDNS_NXT_DATA)
386
387 typedef struct
388 {
389     LPSTR pNameTarget;
390     WORD wPriority;
391     WORD wWeight;
392     WORD wPort;
393     WORD Pad;
394 } DNS_SRV_DATAA, *PDNS_SRV_DATAA;
395
396 typedef struct
397 {
398     LPWSTR pNameTarget;
399     WORD wPriority;
400     WORD wWeight;
401     WORD wPort;
402     WORD Pad;
403 } DNS_SRV_DATAW, *PDNS_SRV_DATAW;
404
405 DECL_WINELIB_TYPE_AW(DNS_SRV_DATA)
406 DECL_WINELIB_TYPE_AW(PDNS_SRV_DATA)
407
408 typedef struct
409 {
410     LPSTR pNameAlgorithm;
411     PBYTE pAlgorithmPacket;
412     PBYTE pKey;
413     PBYTE pOtherData;
414     DWORD dwCreateTime;
415     DWORD dwExpireTime;
416     WORD wMode;
417     WORD wError;
418     WORD wKeyLength;
419     WORD wOtherLength;
420     UCHAR cAlgNameLength;
421     BOOL bPacketPointers;
422 } DNS_TKEY_DATAA, *PDNS_TKEY_DATAA;
423
424 typedef struct
425 {
426     LPWSTR pNameAlgorithm;
427     PBYTE pAlgorithmPacket;
428     PBYTE pKey;
429     PBYTE pOtherData;
430     DWORD dwCreateTime;
431     DWORD dwExpireTime;
432     WORD wMode;
433     WORD wError;
434     WORD wKeyLength;
435     WORD wOtherLength;
436     UCHAR cAlgNameLength;
437     BOOL bPacketPointers;
438 } DNS_TKEY_DATAW, *PDNS_TKEY_DATAW;
439
440 DECL_WINELIB_TYPE_AW(DNS_TKEY_DATA)
441 DECL_WINELIB_TYPE_AW(PDNS_TKEY_DATA)
442
443 typedef struct
444 {
445     LPSTR pNameAlgorithm;
446     PBYTE pAlgorithmPacket;
447     PBYTE pSignature;
448     PBYTE pOtherData;
449     LONGLONG i64CreateTime;
450     WORD wFudgeTime;
451     WORD wOriginalXid;
452     WORD wError;
453     WORD wSigLength;
454     WORD wOtherLength;
455     UCHAR cAlgNameLength;
456     BOOL bPacketPointers;
457 } DNS_TSIG_DATAA, *PDNS_TSIG_DATAA;
458
459 typedef struct
460 {
461     LPWSTR pNameAlgorithm;
462     PBYTE pAlgorithmPacket;
463     PBYTE pSignature;
464     PBYTE pOtherData;
465     LONGLONG i64CreateTime;
466     WORD wFudgeTime;
467     WORD wOriginalXid;
468     WORD wError;
469     WORD wSigLength;
470     WORD wOtherLength;
471     UCHAR cAlgNameLength;
472     BOOL bPacketPointers;
473 } DNS_TSIG_DATAW, *PDNS_TSIG_DATAW;
474
475 typedef struct
476 {
477     DWORD dwMappingFlag;
478     DWORD dwLookupTimeout;
479     DWORD dwCacheTimeout;
480     DWORD cWinsServerCount;
481     IP4_ADDRESS WinsServers[1];
482 } DNS_WINS_DATA, *PDNS_WINS_DATA;
483
484 typedef struct
485 {
486     DWORD dwMappingFlag;
487     DWORD dwLookupTimeout;
488     DWORD dwCacheTimeout;
489     LPSTR pNameResultDomain;
490 } DNS_WINSR_DATAA, *PDNS_WINSR_DATAA;
491
492 typedef struct
493 {
494     DWORD dwMappingFlag;
495     DWORD dwLookupTimeout;
496     DWORD dwCacheTimeout;
497     LPWSTR pNameResultDomain;
498 } DNS_WINSR_DATAW, *PDNS_WINSR_DATAW;
499
500 DECL_WINELIB_TYPE_AW(DNS_WINSR_DATA)
501 DECL_WINELIB_TYPE_AW(PDNS_WINSR_DATA)
502
503 typedef struct _DnsRecordA
504 {
505     struct _DnsRecordA *pNext;
506     LPSTR pName;
507     WORD wType;
508     WORD wDataLength;
509     union
510     {
511         DWORD DW;
512         DNS_RECORD_FLAGS S;
513     } Flags;
514     DWORD dwTtl;
515     DWORD dwReserved;
516     union
517     {
518         DNS_A_DATA A;
519         DNS_SOA_DATAA SOA, Soa;
520         DNS_PTR_DATAA PTR, Ptr, NS, Ns, CNAME, Cname, MB, Mb, MD, Md, MF, Mf, MG, Mg, MR, Mr;
521         DNS_MINFO_DATAA MINFO, Minfo, RP, Rp;
522         DNS_MX_DATAA MX, Mx, AFSDB, Afsdb, RT, Rt;
523         DNS_TXT_DATAA HINFO, Hinfo, ISDN, Isdn, TXT, Txt, X25;
524         DNS_NULL_DATA Null;
525         DNS_WKS_DATA WKS, Wks;
526         DNS_AAAA_DATA AAAA;
527         DNS_KEY_DATA KEY, Key;
528         DNS_SIG_DATAA SIG, Sig;
529         DNS_ATMA_DATA ATMA, Atma;
530         DNS_NXT_DATAA NXT, Nxt;
531         DNS_SRV_DATAA SRV, Srv;
532         DNS_TKEY_DATAA TKEY, Tkey;
533         DNS_TSIG_DATAA TSIG, Tsig;
534         DNS_WINS_DATA WINS, Wins;
535         DNS_WINSR_DATAA WINSR, WinsR, NBSTAT, Nbstat;
536         } Data;
537 } DNS_RECORDA, *PDNS_RECORDA;
538
539 typedef struct _DnsRecordW
540 {
541     struct _DnsRecordW *pNext;
542     LPWSTR pName;
543     WORD wType;
544     WORD wDataLength;
545     union
546     {
547         DWORD DW;
548         DNS_RECORD_FLAGS S;
549     } Flags;
550     DWORD dwTtl;
551     DWORD dwReserved;
552     union
553     {
554         DNS_A_DATA A;
555         DNS_SOA_DATAW SOA, Soa;
556         DNS_PTR_DATAW PTR, Ptr, NS, Ns, CNAME, Cname, MB, Mb, MD, Md, MF, Mf, MG, Mg, MR, Mr;
557         DNS_MINFO_DATAW MINFO, Minfo, RP, Rp;
558         DNS_MX_DATAW MX, Mx, AFSDB, Afsdb, RT, Rt;
559         DNS_TXT_DATAW HINFO, Hinfo, ISDN, Isdn, TXT, Txt, X25;
560         DNS_NULL_DATA Null;
561         DNS_WKS_DATA WKS, Wks;
562         DNS_AAAA_DATA AAAA;
563         DNS_KEY_DATA KEY, Key;
564         DNS_SIG_DATAW SIG, Sig;
565         DNS_ATMA_DATA ATMA, Atma;
566         DNS_NXT_DATAW NXT, Nxt;
567         DNS_SRV_DATAW SRV, Srv;
568         DNS_TKEY_DATAW TKEY, Tkey;
569         DNS_TSIG_DATAW TSIG, Tsig;
570         DNS_WINS_DATA WINS, Wins;
571         DNS_WINSR_DATAW WINSR, WinsR, NBSTAT, Nbstat;
572         } Data;
573 } DNS_RECORDW, *PDNS_RECORDW;
574
575 #if defined(__WINESRC__) || defined(UNICODE)
576 typedef DNS_RECORDW DNS_RECORD;
577 typedef PDNS_RECORDW PDNS_RECORD;
578 #else
579 typedef DNS_RECORDA DNS_RECORD;
580 typedef PDNS_RECORDA PDNS_RECORD;
581 #endif
582
583 typedef struct _DnsRRSet
584 {
585     PDNS_RECORD pFirstRR;
586     PDNS_RECORD pLastRR;
587 } DNS_RRSET, *PDNS_RRSET;
588
589 #define DNS_RRSET_INIT( rrset )                          \
590 {                                                        \
591     PDNS_RRSET  _prrset = &(rrset);                      \
592     _prrset->pFirstRR = NULL;                            \
593     _prrset->pLastRR = (PDNS_RECORD) &_prrset->pFirstRR; \
594 }
595
596 #define DNS_RRSET_ADD( rrset, pnewRR ) \
597 {                                      \
598     PDNS_RRSET  _prrset = &(rrset);    \
599     PDNS_RECORD _prrnew = (pnewRR);    \
600     _prrset->pLastRR->pNext = _prrnew; \
601     _prrset->pLastRR = _prrnew;        \
602 }
603
604 #define DNS_RRSET_TERMINATE( rrset ) \
605 {                                    \
606     PDNS_RRSET  _prrset = &(rrset);  \
607     _prrset->pLastRR->pNext = NULL;  \
608 }
609
610 DNS_STATUS WINAPI DnsAcquireContextHandle_A(DWORD,PVOID,HANDLE*);
611 DNS_STATUS WINAPI DnsAcquireContextHandle_W(DWORD,PVOID,HANDLE*);
612 DNS_STATUS WINAPI DnsExtractRecordsFromMessage_W(PDNS_MESSAGE_BUFFER,WORD,PDNS_RECORDW*);
613 DNS_STATUS WINAPI DnsExtractRecordsFromMessage_UTF8(PDNS_MESSAGE_BUFFER,WORD,PDNS_RECORDA*);
614 DNS_STATUS WINAPI DnsModifyRecordsInSet_A(PDNS_RECORDA,PDNS_RECORDA,DWORD,HANDLE,PIP4_ARRAY,PVOID);
615 DNS_STATUS WINAPI DnsModifyRecordsInSet_W(PDNS_RECORDW,PDNS_RECORDW,DWORD,HANDLE,PIP4_ARRAY,PVOID);
616 DNS_STATUS WINAPI DnsModifyRecordsInSet_UTF8(PDNS_RECORDA,PDNS_RECORDA,DWORD,HANDLE,PIP4_ARRAY,PVOID);
617 BOOL WINAPI DnsNameCompare_A(LPSTR,LPSTR);
618 BOOL WINAPI DnsNameCompare_W(LPWSTR,LPWSTR);
619 DNS_STATUS WINAPI DnsQuery_A(PCSTR,WORD,DWORD,PIP4_ARRAY,PDNS_RECORDA*,PVOID*);
620 DNS_STATUS WINAPI DnsQuery_W(PCWSTR,WORD,DWORD,PIP4_ARRAY,PDNS_RECORDW*,PVOID*);
621 DNS_STATUS WINAPI DnsQuery_UTF8(PCSTR,WORD,DWORD,PIP4_ARRAY,PDNS_RECORDA*,PVOID*);
622 DNS_STATUS WINAPI DnsQueryConfig(DNS_CONFIG_TYPE,DWORD,PWSTR,PVOID,PVOID,PDWORD);
623 BOOL WINAPI DnsRecordCompare(PDNS_RECORD,PDNS_RECORD);
624 PDNS_RECORD WINAPI DnsRecordCopyEx(PDNS_RECORD,DNS_CHARSET,DNS_CHARSET);
625 void WINAPI DnsRecordListFree(PDNS_RECORD,DNS_FREE_TYPE);
626 BOOL WINAPI DnsRecordSetCompare(PDNS_RECORD,PDNS_RECORD,PDNS_RECORD*,PDNS_RECORD*);
627 PDNS_RECORD WINAPI DnsRecordSetCopyEx(PDNS_RECORD,DNS_CHARSET,DNS_CHARSET);
628 PDNS_RECORD WINAPI DnsRecordSetDetach(PDNS_RECORD);
629 void WINAPI DnsReleaseContextHandle(HANDLE);
630 DNS_STATUS WINAPI DnsReplaceRecordSetA(PDNS_RECORDA,DWORD,HANDLE,PIP4_ARRAY,PVOID);
631 DNS_STATUS WINAPI DnsReplaceRecordSetW(PDNS_RECORDW,DWORD,HANDLE,PIP4_ARRAY,PVOID);
632 DNS_STATUS WINAPI DnsReplaceRecordSetUTF8(PDNS_RECORDA,DWORD,HANDLE,PIP4_ARRAY,PVOID);
633 DNS_STATUS WINAPI DnsValidateName_A(LPCSTR,DNS_NAME_FORMAT);
634 DNS_STATUS WINAPI DnsValidateName_W(LPCWSTR, DNS_NAME_FORMAT);
635 DNS_STATUS WINAPI DnsValidateName_UTF8(LPCSTR,DNS_NAME_FORMAT);
636 BOOL WINAPI DnsWriteQuestionToBuffer_W(PDNS_MESSAGE_BUFFER,LPDWORD,LPWSTR,WORD,WORD,BOOL);
637 BOOL WINAPI DnsWriteQuestionToBuffer_UTF8(PDNS_MESSAGE_BUFFER,LPDWORD,LPSTR,WORD,WORD,BOOL);
638
639 #ifdef __cplusplus
640 }
641 #endif
642
643 #endif