ntoskrnl: Forward IRP_MJ_CREATE and IRP_MJ_CLOSE requests to the loaded driver.
[wine.git] / include / windns.h
blobfc2a49c5399a08a7ec6fb9f294750a280740c82d
1 /*
2 * DNS support
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.
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.
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
21 #ifndef __WINE_WINDNS_H
22 #define __WINE_WINDNS_H
24 #ifdef __cplusplus
25 extern "C" {
26 #endif
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
84 #define DNS_TYPE_WINS 0xff01
85 #define DNS_TYPE_WINSR 0xff02
86 #define DNS_TYPE_NBSTAT (DNS_TYPE_WINSR)
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
103 typedef enum _DNS_NAME_FORMAT
105 DnsNameDomain,
106 DnsNameDomainLabel,
107 DnsNameHostnameFull,
108 DnsNameHostnameLabel,
109 DnsNameWildcard,
110 DnsNameSrvRecord
111 } DNS_NAME_FORMAT;
113 typedef enum _DNS_FREE_TYPE
115 DnsFreeFlat,
116 DnsFreeRecordList,
117 DnsFreeParsedMessageFields
118 } DNS_FREE_TYPE;
120 typedef enum _DNS_CHARSET
122 DnsCharSetUnknown,
123 DnsCharSetUnicode,
124 DnsCharSetUtf8,
125 DnsCharSetAnsi
126 } DNS_CHARSET;
128 typedef enum _DNS_CONFIG_TYPE
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;
150 typedef enum _DnsSection
152 DnsSectionQuestion,
153 DnsSectionAnswer,
154 DnsSectionAuthority,
155 DnsSectionAddtional /* Not a typo, as per Microsoft's headers */
156 } DNS_SECTION;
158 typedef LONG DNS_STATUS, *PDNS_STATUS;
159 typedef DWORD IP4_ADDRESS, *PIP4_ADDRESS;
161 typedef struct
163 DWORD IP6Dword[4];
164 } IP6_ADDRESS, *PIP6_ADDRESS, DNS_IP6_ADDRESS, *PDNS_IP6_ADDRESS;
166 #define SIZEOF_IP4_ADDRESS 4
167 #define IP4_ADDRESS_STRING_LENGTH 16
168 #define IP6_ADDRESS_STRING_LENGTH 65
169 #define DNS_ADDRESS_STRING_LENGTH IP6_ADDRESS_STRING_LENGTH
170 #define IP4_ADDRESS_STRING_BUFFER_LENGTH IP4_ADDRESS_STRING_LENGTH
171 #define IP6_ADDRESS_STRING_BUFFER_LENGTH IP6_ADDRESS_STRING_LENGTH
173 typedef struct _IP4_ARRAY
175 DWORD AddrCount;
176 IP4_ADDRESS AddrArray[1];
177 } IP4_ARRAY, *PIP4_ARRAY;
179 #include <pshpack1.h>
180 typedef struct _DNS_HEADER
182 WORD Xid;
183 BYTE RecursionDesired:1;
184 BYTE Truncation:1;
185 BYTE Authoritative:1;
186 BYTE Opcode:4;
187 BYTE IsResponse:1;
188 BYTE ResponseCode:4;
189 BYTE CheckingDisabled:1;
190 BYTE AuthenticatedData:1;
191 BYTE Reserved:1;
192 BYTE RecursionAvailable:1;
193 WORD QuestionCount;
194 WORD AnswerCount;
195 WORD NameServerCount;
196 WORD AdditionalCount;
197 } DNS_HEADER, *PDNS_HEADER;
198 #include <poppack.h>
200 typedef struct _DNS_MESSAGE_BUFFER
202 DNS_HEADER MessageHead;
203 CHAR MessageBody[1];
204 } DNS_MESSAGE_BUFFER, *PDNS_MESSAGE_BUFFER;
206 typedef struct
208 IP4_ADDRESS IpAddress;
209 } DNS_A_DATA, *PDNS_A_DATA;
211 typedef struct _DnsRecordFlags
213 DWORD Section :2;
214 DWORD Delete :1;
215 DWORD CharSet :2;
216 DWORD Unused :3;
217 DWORD Reserved :24;
218 } DNS_RECORD_FLAGS;
220 typedef struct
222 PSTR pNamePrimaryServer;
223 PSTR pNameAdministrator;
224 DWORD dwSerialNo;
225 DWORD dwRefresh;
226 DWORD dwRetry;
227 DWORD dwExpire;
228 DWORD dwDefaultTtl;
229 } DNS_SOA_DATAA, *PDNS_SOA_DATAA;
231 typedef struct
233 PWSTR pNamePrimaryServer;
234 PWSTR pNameAdministrator;
235 DWORD dwSerialNo;
236 DWORD dwRefresh;
237 DWORD dwRetry;
238 DWORD dwExpire;
239 DWORD dwDefaultTtl;
240 } DNS_SOA_DATAW, *PDNS_SOA_DATAW;
242 DECL_WINELIB_TYPE_AW(DNS_SOA_DATA)
243 DECL_WINELIB_TYPE_AW(PDNS_SOA_DATA)
245 typedef struct
247 PSTR pNameHost;
248 } DNS_PTR_DATAA, *PDNS_PTR_DATAA;
250 typedef struct
252 PWSTR pNameHost;
253 } DNS_PTR_DATAW, *PDNS_PTR_DATAW;
255 DECL_WINELIB_TYPE_AW(DNS_PTR_DATA)
256 DECL_WINELIB_TYPE_AW(PDNS_PTR_DATA)
258 typedef struct
260 PSTR pNameMailbox;
261 PSTR pNameErrorsMailbox;
262 } DNS_MINFO_DATAA, *PDNS_MINFO_DATAA;
264 typedef struct
266 PWSTR pNameMailbox;
267 PWSTR pNameErrorsMailbox;
268 } DNS_MINFO_DATAW, *PDNS_MINFO_DATAW;
270 DECL_WINELIB_TYPE_AW(DNS_MINFO_DATA)
271 DECL_WINELIB_TYPE_AW(PDNS_MINFO_DATA)
273 typedef struct
275 PSTR pNameExchange;
276 WORD wPreference;
277 WORD Pad;
278 } DNS_MX_DATAA, *PDNS_MX_DATAA;
280 typedef struct
282 PWSTR pNameExchange;
283 WORD wPreference;
284 WORD Pad;
285 } DNS_MX_DATAW, *PDNS_MX_DATAW;
287 DECL_WINELIB_TYPE_AW(DNS_MX_DATA)
288 DECL_WINELIB_TYPE_AW(PDNS_MX_DATA)
290 typedef struct
292 DWORD dwStringCount;
293 PSTR pStringArray[1];
294 } DNS_TXT_DATAA, *PDNS_TXT_DATAA;
296 typedef struct
298 DWORD dwStringCount;
299 PWSTR pStringArray[1];
300 } DNS_TXT_DATAW, *PDNS_TXT_DATAW;
302 DECL_WINELIB_TYPE_AW(DNS_TXT_DATA)
303 DECL_WINELIB_TYPE_AW(PDNS_TXT_DATA)
305 typedef struct
307 DWORD dwByteCount;
308 BYTE Data[1];
309 } DNS_NULL_DATA, *PDNS_NULL_DATA;
311 typedef struct
313 IP4_ADDRESS IpAddress;
314 UCHAR chProtocol;
315 BYTE BitMask[1];
316 } DNS_WKS_DATA, *PDNS_WKS_DATA;
318 typedef struct
320 DNS_IP6_ADDRESS Ip6Address;
321 } DNS_AAAA_DATA, *PDNS_AAAA_DATA;
323 typedef struct
325 WORD wFlags;
326 BYTE chProtocol;
327 BYTE chAlgorithm;
328 BYTE Key[1];
329 } DNS_KEY_DATA, *PDNS_KEY_DATA;
331 typedef struct
333 WORD wVersion;
334 WORD wSize;
335 WORD wHorPrec;
336 WORD wVerPrec;
337 DWORD dwLatitude;
338 DWORD dwLongitude;
339 DWORD dwAltitude;
340 } DNS_LOC_DATA, *PDNS_LOC_DATA;
342 typedef struct
344 PSTR pNameSigner;
345 WORD wTypeCovered;
346 BYTE chAlgorithm;
347 BYTE chLabelCount;
348 DWORD dwOriginalTtl;
349 DWORD dwExpiration;
350 DWORD dwTimeSigned;
351 WORD wKeyTag;
352 WORD Pad;
353 BYTE Signature[1];
354 } DNS_SIG_DATAA, *PDNS_SIG_DATAA;
356 typedef struct
358 PWSTR pNameSigner;
359 WORD wTypeCovered;
360 BYTE chAlgorithm;
361 BYTE chLabelCount;
362 DWORD dwOriginalTtl;
363 DWORD dwExpiration;
364 DWORD dwTimeSigned;
365 WORD wKeyTag;
366 WORD Pad;
367 BYTE Signature[1];
368 } DNS_SIG_DATAW, *PDNS_SIG_DATAW;
370 DECL_WINELIB_TYPE_AW(DNS_SIG_DATA)
371 DECL_WINELIB_TYPE_AW(PDNS_SIG_DATA)
373 #define DNS_ATMA_MAX_ADDR_LENGTH 20
375 typedef struct
377 BYTE AddressType;
378 BYTE Address[DNS_ATMA_MAX_ADDR_LENGTH];
379 } DNS_ATMA_DATA, *PDNS_ATMA_DATA;
381 typedef struct
383 PSTR pNameNext;
384 WORD wNumTypes;
385 WORD wTypes[1];
386 } DNS_NXT_DATAA, *PDNS_NXT_DATAA;
388 typedef struct
390 PWSTR pNameNext;
391 WORD wNumTypes;
392 WORD wTypes[1];
393 } DNS_NXT_DATAW, *PDNS_NXT_DATAW;
395 DECL_WINELIB_TYPE_AW(DNS_NXT_DATA)
396 DECL_WINELIB_TYPE_AW(PDNS_NXT_DATA)
398 typedef struct
400 PSTR pNameTarget;
401 WORD wPriority;
402 WORD wWeight;
403 WORD wPort;
404 WORD Pad;
405 } DNS_SRV_DATAA, *PDNS_SRV_DATAA;
407 typedef struct
409 PWSTR pNameTarget;
410 WORD wPriority;
411 WORD wWeight;
412 WORD wPort;
413 WORD Pad;
414 } DNS_SRV_DATAW, *PDNS_SRV_DATAW;
416 DECL_WINELIB_TYPE_AW(DNS_SRV_DATA)
417 DECL_WINELIB_TYPE_AW(PDNS_SRV_DATA)
419 typedef struct
421 PSTR pNameAlgorithm;
422 PBYTE pAlgorithmPacket;
423 PBYTE pKey;
424 PBYTE pOtherData;
425 DWORD dwCreateTime;
426 DWORD dwExpireTime;
427 WORD wMode;
428 WORD wError;
429 WORD wKeyLength;
430 WORD wOtherLength;
431 UCHAR cAlgNameLength;
432 BOOL bPacketPointers;
433 } DNS_TKEY_DATAA, *PDNS_TKEY_DATAA;
435 typedef struct
437 PWSTR pNameAlgorithm;
438 PBYTE pAlgorithmPacket;
439 PBYTE pKey;
440 PBYTE pOtherData;
441 DWORD dwCreateTime;
442 DWORD dwExpireTime;
443 WORD wMode;
444 WORD wError;
445 WORD wKeyLength;
446 WORD wOtherLength;
447 UCHAR cAlgNameLength;
448 BOOL bPacketPointers;
449 } DNS_TKEY_DATAW, *PDNS_TKEY_DATAW;
451 DECL_WINELIB_TYPE_AW(DNS_TKEY_DATA)
452 DECL_WINELIB_TYPE_AW(PDNS_TKEY_DATA)
454 typedef struct
456 PSTR pNameAlgorithm;
457 PBYTE pAlgorithmPacket;
458 PBYTE pSignature;
459 PBYTE pOtherData;
460 LONGLONG i64CreateTime;
461 WORD wFudgeTime;
462 WORD wOriginalXid;
463 WORD wError;
464 WORD wSigLength;
465 WORD wOtherLength;
466 UCHAR cAlgNameLength;
467 BOOL bPacketPointers;
468 } DNS_TSIG_DATAA, *PDNS_TSIG_DATAA;
470 typedef struct
472 PWSTR pNameAlgorithm;
473 PBYTE pAlgorithmPacket;
474 PBYTE pSignature;
475 PBYTE pOtherData;
476 LONGLONG i64CreateTime;
477 WORD wFudgeTime;
478 WORD wOriginalXid;
479 WORD wError;
480 WORD wSigLength;
481 WORD wOtherLength;
482 UCHAR cAlgNameLength;
483 BOOL bPacketPointers;
484 } DNS_TSIG_DATAW, *PDNS_TSIG_DATAW;
486 typedef struct
488 DWORD dwMappingFlag;
489 DWORD dwLookupTimeout;
490 DWORD dwCacheTimeout;
491 DWORD cWinsServerCount;
492 IP4_ADDRESS WinsServers[1];
493 } DNS_WINS_DATA, *PDNS_WINS_DATA;
495 typedef struct
497 DWORD dwMappingFlag;
498 DWORD dwLookupTimeout;
499 DWORD dwCacheTimeout;
500 PSTR pNameResultDomain;
501 } DNS_WINSR_DATAA, *PDNS_WINSR_DATAA;
503 typedef struct
505 DWORD dwMappingFlag;
506 DWORD dwLookupTimeout;
507 DWORD dwCacheTimeout;
508 PWSTR pNameResultDomain;
509 } DNS_WINSR_DATAW, *PDNS_WINSR_DATAW;
511 DECL_WINELIB_TYPE_AW(DNS_WINSR_DATA)
512 DECL_WINELIB_TYPE_AW(PDNS_WINSR_DATA)
514 typedef struct _DnsRecordA
516 struct _DnsRecordA *pNext;
517 PSTR pName;
518 WORD wType;
519 WORD wDataLength;
520 union
522 DWORD DW;
523 DNS_RECORD_FLAGS S;
524 } Flags;
525 DWORD dwTtl;
526 DWORD dwReserved;
527 union
529 DNS_A_DATA A;
530 DNS_SOA_DATAA SOA, Soa;
531 DNS_PTR_DATAA PTR, Ptr, NS, Ns, CNAME, Cname, MB, Mb, MD, Md, MF, Mf, MG, Mg, MR, Mr;
532 DNS_MINFO_DATAA MINFO, Minfo, RP, Rp;
533 DNS_MX_DATAA MX, Mx, AFSDB, Afsdb, RT, Rt;
534 DNS_TXT_DATAA HINFO, Hinfo, ISDN, Isdn, TXT, Txt, X25;
535 DNS_NULL_DATA Null;
536 DNS_WKS_DATA WKS, Wks;
537 DNS_AAAA_DATA AAAA;
538 DNS_KEY_DATA KEY, Key;
539 DNS_SIG_DATAA SIG, Sig;
540 DNS_ATMA_DATA ATMA, Atma;
541 DNS_NXT_DATAA NXT, Nxt;
542 DNS_SRV_DATAA SRV, Srv;
543 DNS_TKEY_DATAA TKEY, Tkey;
544 DNS_TSIG_DATAA TSIG, Tsig;
545 DNS_WINS_DATA WINS, Wins;
546 DNS_WINSR_DATAA WINSR, WinsR, NBSTAT, Nbstat;
547 } Data;
548 } DNS_RECORDA, *PDNS_RECORDA;
550 typedef struct _DnsRecordW
552 struct _DnsRecordW *pNext;
553 PWSTR pName;
554 WORD wType;
555 WORD wDataLength;
556 union
558 DWORD DW;
559 DNS_RECORD_FLAGS S;
560 } Flags;
561 DWORD dwTtl;
562 DWORD dwReserved;
563 union
565 DNS_A_DATA A;
566 DNS_SOA_DATAW SOA, Soa;
567 DNS_PTR_DATAW PTR, Ptr, NS, Ns, CNAME, Cname, MB, Mb, MD, Md, MF, Mf, MG, Mg, MR, Mr;
568 DNS_MINFO_DATAW MINFO, Minfo, RP, Rp;
569 DNS_MX_DATAW MX, Mx, AFSDB, Afsdb, RT, Rt;
570 DNS_TXT_DATAW HINFO, Hinfo, ISDN, Isdn, TXT, Txt, X25;
571 DNS_NULL_DATA Null;
572 DNS_WKS_DATA WKS, Wks;
573 DNS_AAAA_DATA AAAA;
574 DNS_KEY_DATA KEY, Key;
575 DNS_SIG_DATAW SIG, Sig;
576 DNS_ATMA_DATA ATMA, Atma;
577 DNS_NXT_DATAW NXT, Nxt;
578 DNS_SRV_DATAW SRV, Srv;
579 DNS_TKEY_DATAW TKEY, Tkey;
580 DNS_TSIG_DATAW TSIG, Tsig;
581 DNS_WINS_DATA WINS, Wins;
582 DNS_WINSR_DATAW WINSR, WinsR, NBSTAT, Nbstat;
583 } Data;
584 } DNS_RECORDW, *PDNS_RECORDW;
586 #if defined(__WINESRC__) || defined(UNICODE)
587 typedef DNS_RECORDW DNS_RECORD;
588 typedef PDNS_RECORDW PDNS_RECORD;
589 #else
590 typedef DNS_RECORDA DNS_RECORD;
591 typedef PDNS_RECORDA PDNS_RECORD;
592 #endif
594 typedef struct _DnsRRSet
596 PDNS_RECORD pFirstRR;
597 PDNS_RECORD pLastRR;
598 } DNS_RRSET, *PDNS_RRSET;
600 #define DNS_RRSET_INIT( rrset ) \
602 PDNS_RRSET _prrset = &(rrset); \
603 _prrset->pFirstRR = NULL; \
604 _prrset->pLastRR = (PDNS_RECORD) &_prrset->pFirstRR; \
607 #define DNS_RRSET_ADD( rrset, pnewRR ) \
609 PDNS_RRSET _prrset = &(rrset); \
610 PDNS_RECORD _prrnew = (pnewRR); \
611 _prrset->pLastRR->pNext = _prrnew; \
612 _prrset->pLastRR = _prrnew; \
615 #define DNS_RRSET_TERMINATE( rrset ) \
617 PDNS_RRSET _prrset = &(rrset); \
618 _prrset->pLastRR->pNext = NULL; \
621 DNS_STATUS WINAPI DnsAcquireContextHandle_A(DWORD,PVOID,PHANDLE);
622 DNS_STATUS WINAPI DnsAcquireContextHandle_W(DWORD,PVOID,PHANDLE);
623 #define DnsAcquireContextHandle WINELIB_NAME_AW(DnsAcquireContextHandle_)
624 DNS_STATUS WINAPI DnsExtractRecordsFromMessage_W(PDNS_MESSAGE_BUFFER,WORD,PDNS_RECORDW*);
625 DNS_STATUS WINAPI DnsExtractRecordsFromMessage_UTF8(PDNS_MESSAGE_BUFFER,WORD,PDNS_RECORDA*);
626 VOID WINAPI DnsFree(PVOID,DNS_FREE_TYPE);
627 DNS_STATUS WINAPI DnsModifyRecordsInSet_A(PDNS_RECORDA,PDNS_RECORDA,DWORD,HANDLE,PVOID,PVOID);
628 DNS_STATUS WINAPI DnsModifyRecordsInSet_W(PDNS_RECORDW,PDNS_RECORDW,DWORD,HANDLE,PVOID,PVOID);
629 DNS_STATUS WINAPI DnsModifyRecordsInSet_UTF8(PDNS_RECORDA,PDNS_RECORDA,DWORD,HANDLE,PVOID,PVOID);
630 #define DnsModifyRecordsInSet WINELIB_NAME_AW(DnsModifyRecordsInSet_)
631 BOOL WINAPI DnsNameCompare_A(PCSTR,PCSTR);
632 BOOL WINAPI DnsNameCompare_W(PCWSTR,PCWSTR);
633 #define DnsNameCompare WINELIB_NAME_AW(DnsNameCompare_)
634 DNS_STATUS WINAPI DnsQuery_A(PCSTR,WORD,DWORD,PVOID,PDNS_RECORDA*,PVOID*);
635 DNS_STATUS WINAPI DnsQuery_W(PCWSTR,WORD,DWORD,PVOID,PDNS_RECORDW*,PVOID*);
636 DNS_STATUS WINAPI DnsQuery_UTF8(PCSTR,WORD,DWORD,PVOID,PDNS_RECORDA*,PVOID*);
637 #define DnsQuery WINELIB_NAME_AW(DnsQuery_)
638 DNS_STATUS WINAPI DnsQueryConfig(DNS_CONFIG_TYPE,DWORD,PCWSTR,PVOID,PVOID,PDWORD);
639 BOOL WINAPI DnsRecordCompare(PDNS_RECORD,PDNS_RECORD);
640 PDNS_RECORD WINAPI DnsRecordCopyEx(PDNS_RECORD,DNS_CHARSET,DNS_CHARSET);
641 VOID WINAPI DnsRecordListFree(PDNS_RECORD,DNS_FREE_TYPE);
642 BOOL WINAPI DnsRecordSetCompare(PDNS_RECORD,PDNS_RECORD,PDNS_RECORD*,PDNS_RECORD*);
643 PDNS_RECORD WINAPI DnsRecordSetCopyEx(PDNS_RECORD,DNS_CHARSET,DNS_CHARSET);
644 PDNS_RECORD WINAPI DnsRecordSetDetach(PDNS_RECORD);
645 void WINAPI DnsReleaseContextHandle(HANDLE);
646 DNS_STATUS WINAPI DnsReplaceRecordSetA(PDNS_RECORDA,DWORD,HANDLE,PVOID,PVOID);
647 DNS_STATUS WINAPI DnsReplaceRecordSetW(PDNS_RECORDW,DWORD,HANDLE,PVOID,PVOID);
648 DNS_STATUS WINAPI DnsReplaceRecordSetUTF8(PDNS_RECORDA,DWORD,HANDLE,PVOID,PVOID);
649 #define DnsReplaceRecordSet WINELIB_NAME_AW(DnsReplaceRecordSet)
650 DNS_STATUS WINAPI DnsValidateName_A(PCSTR,DNS_NAME_FORMAT);
651 DNS_STATUS WINAPI DnsValidateName_W(PCWSTR, DNS_NAME_FORMAT);
652 DNS_STATUS WINAPI DnsValidateName_UTF8(PCSTR,DNS_NAME_FORMAT);
653 #define DnsValidateName WINELIB_NAME_AW(DnsValidateName_)
654 BOOL WINAPI DnsWriteQuestionToBuffer_W(PDNS_MESSAGE_BUFFER,PDWORD,PCWSTR,WORD,WORD,BOOL);
655 BOOL WINAPI DnsWriteQuestionToBuffer_UTF8(PDNS_MESSAGE_BUFFER,PDWORD,PCSTR,WORD,WORD,BOOL);
657 #ifdef __cplusplus
659 #endif
661 #endif