windns.h revision 3194da424708abdd288b28d96892b3a5f3f7df0b
303N/A/*
303N/A * DNS support
303N/A *
303N/A * Copyright (C) 2006 Matthew Kehrer
303N/A *
303N/A * This library is free software; you can redistribute it and/or
303N/A * modify it under the terms of the GNU Lesser General Public
303N/A * License as published by the Free Software Foundation; either
303N/A * version 2.1 of the License, or (at your option) any later version.
303N/A *
303N/A * This library is distributed in the hope that it will be useful,
303N/A * but WITHOUT ANY WARRANTY; without even the implied warranty of
303N/A * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
303N/A * Lesser General Public License for more details.
303N/A *
303N/A * You should have received a copy of the GNU Lesser General Public
303N/A * License along with this library; if not, write to the Free Software
303N/A * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
303N/A */
303N/A
5680N/A#ifndef __WINE_WINDNS_H
303N/A#define __WINE_WINDNS_H
5680N/A
5680N/A#ifdef __cplusplus
5680N/Aextern "C" {
303N/A#endif
303N/A
303N/A#define DNS_TYPE_ZERO 0x0000
6239N/A#define DNS_TYPE_A 0x0001
303N/A#define DNS_TYPE_NS 0x0002
303N/A#define DNS_TYPE_MD 0x0003
844N/A#define DNS_TYPE_MF 0x0004
6239N/A#define DNS_TYPE_CNAME 0x0005
303N/A#define DNS_TYPE_SOA 0x0006
303N/A#define DNS_TYPE_MB 0x0007
6239N/A#define DNS_TYPE_MG 0x0008
2899N/A#define DNS_TYPE_MR 0x0009
6382N/A#define DNS_TYPE_NULL 0x000a
6382N/A#define DNS_TYPE_WKS 0x000b
6382N/A#define DNS_TYPE_PTR 0x000c
6382N/A#define DNS_TYPE_HINFO 0x000d
6382N/A#define DNS_TYPE_MINFO 0x000e
6382N/A#define DNS_TYPE_MX 0x000f
6382N/A#define DNS_TYPE_TEXT 0x0010
5680N/A#define DNS_TYPE_RP 0x0011
303N/A#define DNS_TYPE_AFSDB 0x0012
303N/A#define DNS_TYPE_X25 0x0013
303N/A#define DNS_TYPE_ISDN 0x0014
303N/A#define DNS_TYPE_RT 0x0015
303N/A#define DNS_TYPE_NSAP 0x0016
303N/A#define DNS_TYPE_NSAPPTR 0x0017
303N/A#define DNS_TYPE_SIG 0x0018
303N/A#define DNS_TYPE_KEY 0x0019
303N/A#define DNS_TYPE_PX 0x001a
303N/A#define DNS_TYPE_GPOS 0x001b
303N/A#define DNS_TYPE_AAAA 0x001c
303N/A#define DNS_TYPE_LOC 0x001d
303N/A#define DNS_TYPE_NXT 0x001e
303N/A#define DNS_TYPE_EID 0x001f
303N/A#define DNS_TYPE_NIMLOC 0x0020
303N/A#define DNS_TYPE_SRV 0x0021
303N/A#define DNS_TYPE_ATMA 0x0022
303N/A#define DNS_TYPE_NAPTR 0x0023
303N/A#define DNS_TYPE_KX 0x0024
5680N/A#define DNS_TYPE_CERT 0x0025
5680N/A#define DNS_TYPE_A6 0x0026
303N/A#define DNS_TYPE_DNAME 0x0027
4115N/A#define DNS_TYPE_SINK 0x0028
4115N/A#define DNS_TYPE_OPT 0x0029
4115N/A#define DNS_TYPE_UINFO 0x0064
4115N/A#define DNS_TYPE_UID 0x0065
4115N/A#define DNS_TYPE_GID 0x0066
4115N/A#define DNS_TYPE_UNSPEC 0x0067
4115N/A#define DNS_TYPE_ADDRS 0x00f8
4115N/A#define DNS_TYPE_TKEY 0x00f9
4115N/A#define DNS_TYPE_TSIG 0x00fa
4115N/A#define DNS_TYPE_IXFR 0x00fb
4115N/A#define DNS_TYPE_AXFR 0x00fc
4115N/A#define DNS_TYPE_MAILB 0x00fd
4115N/A#define DNS_TYPE_MAILA 0x00fe
4115N/A#define DNS_TYPE_ALL 0x00ff
4115N/A#define DNS_TYPE_ANY 0x00ff
4115N/A
4115N/A#define DNS_TYPE_WINS 0xff01
4115N/A#define DNS_TYPE_WINSR 0xff02
4115N/A#define DNS_TYPE_NBSTAT (DNS_TYPE_WINSR)
4115N/A
4115N/A#define DNS_QUERY_STANDARD 0x00000000
4115N/A#define DNS_QUERY_ACCEPT_TRUNCATED_RESPONSE 0x00000001
4115N/A#define DNS_QUERY_USE_TCP_ONLY 0x00000002
4115N/A#define DNS_QUERY_NO_RECURSION 0x00000004
4115N/A#define DNS_QUERY_BYPASS_CACHE 0x00000008
4115N/A#define DNS_QUERY_NO_WIRE_QUERY 0x00000010
4115N/A#define DNS_QUERY_NO_LOCAL_NAME 0x00000020
4115N/A#define DNS_QUERY_NO_HOSTS_FILE 0x00000040
4115N/A#define DNS_QUERY_NO_NETBT 0x00000080
4115N/A#define DNS_QUERY_WIRE_ONLY 0x00000100
4115N/A#define DNS_QUERY_RETURN_MESSAGE 0x00000200
4115N/A#define DNS_QUERY_TREAT_AS_FQDN 0x00001000
4115N/A#define DNS_QUERY_DONT_RESET_TTL_VALUES 0x00100000
303N/A#define DNS_QUERY_RESERVED 0xff000000
303N/A
4115N/Atypedef enum _DNS_NAME_FORMAT
4115N/A{
4115N/A DnsNameDomain,
4115N/A DnsNameDomainLabel,
5680N/A DnsNameHostnameFull,
303N/A DnsNameHostnameLabel,
303N/A DnsNameWildcard,
5680N/A DnsNameSrvRecord
303N/A} DNS_NAME_FORMAT;
303N/A
303N/Atypedef enum _DNS_FREE_TYPE
303N/A{
401N/A DnsFreeFlat,
303N/A DnsFreeRecordList,
303N/A DnsFreeParsedMessageFields
303N/A} DNS_FREE_TYPE;
303N/A
303N/Atypedef enum _DNS_CHARSET
303N/A{
303N/A DnsCharSetUnknown,
303N/A DnsCharSetUnicode,
303N/A DnsCharSetUtf8,
303N/A DnsCharSetAnsi
303N/A} DNS_CHARSET;
303N/A
303N/Atypedef enum _DNS_CONFIG_TYPE
303N/A{
303N/A DnsConfigPrimaryDomainName_W,
303N/A DnsConfigPrimaryDomainName_A,
303N/A DnsConfigPrimaryDomainName_UTF8,
303N/A DnsConfigAdapterDomainName_W,
303N/A DnsConfigAdapterDomainName_A,
303N/A DnsConfigAdapterDomainName_UTF8,
303N/A DnsConfigDnsServerList,
303N/A DnsConfigSearchList,
303N/A DnsConfigAdapterInfo,
303N/A DnsConfigPrimaryHostNameRegistrationEnabled,
303N/A DnsConfigAdapterHostNameRegistrationEnabled,
303N/A DnsConfigAddressRegistrationMaxCount,
303N/A DnsConfigHostName_W,
303N/A DnsConfigHostName_A,
303N/A DnsConfigHostName_UTF8,
303N/A DnsConfigFullHostName_W,
5680N/A DnsConfigFullHostName_A,
303N/A DnsConfigFullHostName_UTF8
303N/A} DNS_CONFIG_TYPE;
303N/A
3817N/Atypedef enum _DnsSection
3817N/A{
3817N/A DnsSectionQuestion,
3817N/A DnsSectionAnswer,
3817N/A DnsSectionAuthority,
3817N/A DnsSectionAddtional /* Not a typo, as per Microsoft's headers */
3817N/A} DNS_SECTION;
3817N/A
3817N/Atypedef LONG DNS_STATUS, *PDNS_STATUS;
3817N/Atypedef DWORD IP4_ADDRESS, *PIP4_ADDRESS;
3817N/A
3817N/Atypedef struct
3817N/A{
3817N/A DWORD IP6Dword[4];
6133N/A} IP6_ADDRESS, *PIP6_ADDRESS, DNS_IP6_ADDRESS, *PDNS_IP6_ADDRESS;
3817N/A
#define SIZEOF_IP4_ADDRESS 4
#define IP4_ADDRESS_STRING_LENGTH 16
#define IP6_ADDRESS_STRING_LENGTH 65
#define DNS_ADDRESS_STRING_LENGTH IP6_ADDRESS_STRING_LENGTH
#define IP4_ADDRESS_STRING_BUFFER_LENGTH IP4_ADDRESS_STRING_LENGTH
#define IP6_ADDRESS_STRING_BUFFER_LENGTH IP6_ADDRESS_STRING_LENGTH
typedef struct _IP4_ARRAY
{
DWORD AddrCount;
IP4_ADDRESS AddrArray[1];
} IP4_ARRAY, *PIP4_ARRAY;
typedef struct _DNS_HEADER
{
WORD Xid;
BYTE RecursionDesired;
BYTE Truncation;
BYTE Authoritative;
BYTE Opcode;
BYTE IsResponse;
BYTE ResponseCode;
BYTE Reserved;
BYTE RecursionAvailable;
WORD QuestionCount;
WORD AnswerCount;
WORD NameServerCount;
WORD AdditionalCount;
} DNS_HEADER, *PDNS_HEADER;
typedef struct _DNS_MESSAGE_BUFFER
{
DNS_HEADER MessageHead;
CHAR MessageBody[1];
} DNS_MESSAGE_BUFFER, *PDNS_MESSAGE_BUFFER;
typedef struct
{
IP4_ADDRESS IpAddress;
} DNS_A_DATA, *PDNS_A_DATA;
typedef struct _DnsRecordFlags
{
DWORD Section :2;
DWORD Delete :1;
DWORD CharSet :2;
DWORD Unused :3;
DWORD Reserved :24;
} DNS_RECORD_FLAGS;
typedef struct
{
PSTR pNamePrimaryServer;
PSTR pNameAdministrator;
DWORD dwSerialNo;
DWORD dwRefresh;
DWORD dwRetry;
DWORD dwExpire;
DWORD dwDefaultTtl;
} DNS_SOA_DATAA, *PDNS_SOA_DATAA;
typedef struct
{
PWSTR pNamePrimaryServer;
PWSTR pNameAdministrator;
DWORD dwSerialNo;
DWORD dwRefresh;
DWORD dwRetry;
DWORD dwExpire;
DWORD dwDefaultTtl;
} DNS_SOA_DATAW, *PDNS_SOA_DATAW;
DECL_WINELIB_TYPE_AW(DNS_SOA_DATA)
DECL_WINELIB_TYPE_AW(PDNS_SOA_DATA)
typedef struct
{
PSTR pNameHost;
} DNS_PTR_DATAA, *PDNS_PTR_DATAA;
typedef struct
{
PWSTR pNameHost;
} DNS_PTR_DATAW, *PDNS_PTR_DATAW;
DECL_WINELIB_TYPE_AW(DNS_PTR_DATA)
DECL_WINELIB_TYPE_AW(PDNS_PTR_DATA)
typedef struct
{
PSTR pNameMailbox;
PSTR pNameErrorsMailbox;
} DNS_MINFO_DATAA, *PDNS_MINFO_DATAA;
typedef struct
{
PWSTR pNameMailbox;
PWSTR pNameErrorsMailbox;
} DNS_MINFO_DATAW, *PDNS_MINFO_DATAW;
DECL_WINELIB_TYPE_AW(DNS_MINFO_DATA)
DECL_WINELIB_TYPE_AW(PDNS_MINFO_DATA)
typedef struct
{
PSTR pNameExchange;
WORD wPreference;
WORD Pad;
} DNS_MX_DATAA, *PDNS_MX_DATAA;
typedef struct
{
PWSTR pNameExchange;
WORD wPreference;
WORD Pad;
} DNS_MX_DATAW, *PDNS_MX_DATAW;
DECL_WINELIB_TYPE_AW(DNS_MX_DATA)
DECL_WINELIB_TYPE_AW(PDNS_MX_DATA)
typedef struct
{
DWORD dwStringCount;
PSTR pStringArray[1];
} DNS_TXT_DATAA, *PDNS_TXT_DATAA;
typedef struct
{
DWORD dwStringCount;
PWSTR pStringArray[1];
} DNS_TXT_DATAW, *PDNS_TXT_DATAW;
DECL_WINELIB_TYPE_AW(DNS_TXT_DATA)
DECL_WINELIB_TYPE_AW(PDNS_TXT_DATA)
typedef struct
{
DWORD dwByteCount;
BYTE Data[1];
} DNS_NULL_DATA, *PDNS_NULL_DATA;
typedef struct
{
IP4_ADDRESS IpAddress;
UCHAR chProtocol;
BYTE BitMask[1];
} DNS_WKS_DATA, *PDNS_WKS_DATA;
typedef struct
{
DNS_IP6_ADDRESS Ip6Address;
} DNS_AAAA_DATA, *PDNS_AAAA_DATA;
typedef struct
{
WORD wFlags;
BYTE chProtocol;
BYTE chAlgorithm;
BYTE Key[1];
} DNS_KEY_DATA, *PDNS_KEY_DATA;
typedef struct
{
WORD wVersion;
WORD wSize;
WORD wHorPrec;
WORD wVerPrec;
DWORD dwLatitude;
DWORD dwLongitude;
DWORD dwAltitude;
} DNS_LOC_DATA, *PDNS_LOC_DATA;
typedef struct
{
PSTR pNameSigner;
WORD wTypeCovered;
BYTE chAlgorithm;
BYTE chLabelCount;
DWORD dwOriginalTtl;
DWORD dwExpiration;
DWORD dwTimeSigned;
WORD wKeyTag;
WORD Pad;
BYTE Signature[1];
} DNS_SIG_DATAA, *PDNS_SIG_DATAA;
typedef struct
{
PWSTR pNameSigner;
WORD wTypeCovered;
BYTE chAlgorithm;
BYTE chLabelCount;
DWORD dwOriginalTtl;
DWORD dwExpiration;
DWORD dwTimeSigned;
WORD wKeyTag;
WORD Pad;
BYTE Signature[1];
} DNS_SIG_DATAW, *PDNS_SIG_DATAW;
DECL_WINELIB_TYPE_AW(DNS_SIG_DATA)
DECL_WINELIB_TYPE_AW(PDNS_SIG_DATA)
#define DNS_ATMA_MAX_ADDR_LENGTH 20
typedef struct
{
BYTE AddressType;
BYTE Address[DNS_ATMA_MAX_ADDR_LENGTH];
} DNS_ATMA_DATA, *PDNS_ATMA_DATA;
typedef struct
{
PSTR pNameNext;
WORD wNumTypes;
WORD wTypes[1];
} DNS_NXT_DATAA, *PDNS_NXT_DATAA;
typedef struct
{
PWSTR pNameNext;
WORD wNumTypes;
WORD wTypes[1];
} DNS_NXT_DATAW, *PDNS_NXT_DATAW;
DECL_WINELIB_TYPE_AW(DNS_NXT_DATA)
DECL_WINELIB_TYPE_AW(PDNS_NXT_DATA)
typedef struct
{
PSTR pNameTarget;
WORD wPriority;
WORD wWeight;
WORD wPort;
WORD Pad;
} DNS_SRV_DATAA, *PDNS_SRV_DATAA;
typedef struct
{
PWSTR pNameTarget;
WORD wPriority;
WORD wWeight;
WORD wPort;
WORD Pad;
} DNS_SRV_DATAW, *PDNS_SRV_DATAW;
DECL_WINELIB_TYPE_AW(DNS_SRV_DATA)
DECL_WINELIB_TYPE_AW(PDNS_SRV_DATA)
typedef struct
{
PSTR pNameAlgorithm;
PBYTE pAlgorithmPacket;
PBYTE pKey;
PBYTE pOtherData;
DWORD dwCreateTime;
DWORD dwExpireTime;
WORD wMode;
WORD wError;
WORD wKeyLength;
WORD wOtherLength;
UCHAR cAlgNameLength;
BOOL bPacketPointers;
} DNS_TKEY_DATAA, *PDNS_TKEY_DATAA;
typedef struct
{
PWSTR pNameAlgorithm;
PBYTE pAlgorithmPacket;
PBYTE pKey;
PBYTE pOtherData;
DWORD dwCreateTime;
DWORD dwExpireTime;
WORD wMode;
WORD wError;
WORD wKeyLength;
WORD wOtherLength;
UCHAR cAlgNameLength;
BOOL bPacketPointers;
} DNS_TKEY_DATAW, *PDNS_TKEY_DATAW;
DECL_WINELIB_TYPE_AW(DNS_TKEY_DATA)
DECL_WINELIB_TYPE_AW(PDNS_TKEY_DATA)
typedef struct
{
PSTR pNameAlgorithm;
PBYTE pAlgorithmPacket;
PBYTE pSignature;
PBYTE pOtherData;
LONGLONG i64CreateTime;
WORD wFudgeTime;
WORD wOriginalXid;
WORD wError;
WORD wSigLength;
WORD wOtherLength;
UCHAR cAlgNameLength;
BOOL bPacketPointers;
} DNS_TSIG_DATAA, *PDNS_TSIG_DATAA;
typedef struct
{
PWSTR pNameAlgorithm;
PBYTE pAlgorithmPacket;
PBYTE pSignature;
PBYTE pOtherData;
LONGLONG i64CreateTime;
WORD wFudgeTime;
WORD wOriginalXid;
WORD wError;
WORD wSigLength;
WORD wOtherLength;
UCHAR cAlgNameLength;
BOOL bPacketPointers;
} DNS_TSIG_DATAW, *PDNS_TSIG_DATAW;
typedef struct
{
DWORD dwMappingFlag;
DWORD dwLookupTimeout;
DWORD dwCacheTimeout;
DWORD cWinsServerCount;
IP4_ADDRESS WinsServers[1];
} DNS_WINS_DATA, *PDNS_WINS_DATA;
typedef struct
{
DWORD dwMappingFlag;
DWORD dwLookupTimeout;
DWORD dwCacheTimeout;
PSTR pNameResultDomain;
} DNS_WINSR_DATAA, *PDNS_WINSR_DATAA;
typedef struct
{
DWORD dwMappingFlag;
DWORD dwLookupTimeout;
DWORD dwCacheTimeout;
PWSTR pNameResultDomain;
} DNS_WINSR_DATAW, *PDNS_WINSR_DATAW;
DECL_WINELIB_TYPE_AW(DNS_WINSR_DATA)
DECL_WINELIB_TYPE_AW(PDNS_WINSR_DATA)
typedef struct _DnsRecordA
{
struct _DnsRecordA *pNext;
PSTR pName;
WORD wType;
WORD wDataLength;
union
{
DWORD DW;
DNS_RECORD_FLAGS S;
} Flags;
DWORD dwTtl;
DWORD dwReserved;
union
{
DNS_A_DATA A;
DNS_SOA_DATAA SOA, Soa;
DNS_PTR_DATAA PTR, Ptr, NS, Ns, CNAME, Cname, MB, Mb, MD, Md, MF, Mf, MG, Mg, MR, Mr;
DNS_MINFO_DATAA MINFO, Minfo, RP, Rp;
DNS_MX_DATAA MX, Mx, AFSDB, Afsdb, RT, Rt;
DNS_TXT_DATAA HINFO, Hinfo, ISDN, Isdn, TXT, Txt, X25;
DNS_NULL_DATA Null;
DNS_WKS_DATA WKS, Wks;
DNS_AAAA_DATA AAAA;
DNS_KEY_DATA KEY, Key;
DNS_SIG_DATAA SIG, Sig;
DNS_ATMA_DATA ATMA, Atma;
DNS_NXT_DATAA NXT, Nxt;
DNS_SRV_DATAA SRV, Srv;
DNS_TKEY_DATAA TKEY, Tkey;
DNS_TSIG_DATAA TSIG, Tsig;
DNS_WINS_DATA WINS, Wins;
DNS_WINSR_DATAA WINSR, WinsR, NBSTAT, Nbstat;
} Data;
} DNS_RECORDA, *PDNS_RECORDA;
typedef struct _DnsRecordW
{
struct _DnsRecordW *pNext;
PWSTR pName;
WORD wType;
WORD wDataLength;
union
{
DWORD DW;
DNS_RECORD_FLAGS S;
} Flags;
DWORD dwTtl;
DWORD dwReserved;
union
{
DNS_A_DATA A;
DNS_SOA_DATAW SOA, Soa;
DNS_PTR_DATAW PTR, Ptr, NS, Ns, CNAME, Cname, MB, Mb, MD, Md, MF, Mf, MG, Mg, MR, Mr;
DNS_MINFO_DATAW MINFO, Minfo, RP, Rp;
DNS_MX_DATAW MX, Mx, AFSDB, Afsdb, RT, Rt;
DNS_TXT_DATAW HINFO, Hinfo, ISDN, Isdn, TXT, Txt, X25;
DNS_NULL_DATA Null;
DNS_WKS_DATA WKS, Wks;
DNS_AAAA_DATA AAAA;
DNS_KEY_DATA KEY, Key;
DNS_SIG_DATAW SIG, Sig;
DNS_ATMA_DATA ATMA, Atma;
DNS_NXT_DATAW NXT, Nxt;
DNS_SRV_DATAW SRV, Srv;
DNS_TKEY_DATAW TKEY, Tkey;
DNS_TSIG_DATAW TSIG, Tsig;
DNS_WINS_DATA WINS, Wins;
DNS_WINSR_DATAW WINSR, WinsR, NBSTAT, Nbstat;
} Data;
} DNS_RECORDW, *PDNS_RECORDW;
#if defined(__WINESRC__) || defined(UNICODE)
typedef DNS_RECORDW DNS_RECORD;
typedef PDNS_RECORDW PDNS_RECORD;
#else
typedef DNS_RECORDA DNS_RECORD;
typedef PDNS_RECORDA PDNS_RECORD;
#endif
typedef struct _DnsRRSet
{
PDNS_RECORD pFirstRR;
PDNS_RECORD pLastRR;
} DNS_RRSET, *PDNS_RRSET;
#define DNS_RRSET_INIT( rrset ) \
{ \
PDNS_RRSET _prrset = &(rrset); \
_prrset->pFirstRR = NULL; \
_prrset->pLastRR = (PDNS_RECORD) &_prrset->pFirstRR; \
}
#define DNS_RRSET_ADD( rrset, pnewRR ) \
{ \
PDNS_RRSET _prrset = &(rrset); \
PDNS_RECORD _prrnew = (pnewRR); \
_prrset->pLastRR->pNext = _prrnew; \
_prrset->pLastRR = _prrnew; \
}
#define DNS_RRSET_TERMINATE( rrset ) \
{ \
PDNS_RRSET _prrset = &(rrset); \
_prrset->pLastRR->pNext = NULL; \
}
DNS_STATUS WINAPI DnsAcquireContextHandle_A(DWORD,PVOID,PHANDLE);
DNS_STATUS WINAPI DnsAcquireContextHandle_W(DWORD,PVOID,PHANDLE);
#define DnsAcquireContextHandle WINELIB_NAME_AW(DnsAcquireContextHandle_)
DNS_STATUS WINAPI DnsExtractRecordsFromMessage_W(PDNS_MESSAGE_BUFFER,WORD,PDNS_RECORDW*);
DNS_STATUS WINAPI DnsExtractRecordsFromMessage_UTF8(PDNS_MESSAGE_BUFFER,WORD,PDNS_RECORDA*);
VOID WINAPI DnsFree(PVOID,DNS_FREE_TYPE);
DNS_STATUS WINAPI DnsModifyRecordsInSet_A(PDNS_RECORDA,PDNS_RECORDA,DWORD,HANDLE,PVOID,PVOID);
DNS_STATUS WINAPI DnsModifyRecordsInSet_W(PDNS_RECORDW,PDNS_RECORDW,DWORD,HANDLE,PVOID,PVOID);
DNS_STATUS WINAPI DnsModifyRecordsInSet_UTF8(PDNS_RECORDA,PDNS_RECORDA,DWORD,HANDLE,PVOID,PVOID);
#define DnsModifyRecordsInSet WINELIB_NAME_AW(DnsModifyRecordsInSet_)
BOOL WINAPI DnsNameCompare_A(PCSTR,PCSTR);
BOOL WINAPI DnsNameCompare_W(PCWSTR,PCWSTR);
#define DnsNameCompare WINELIB_NAME_AW(DnsNameCompare_)
DNS_STATUS WINAPI DnsQuery_A(PCSTR,WORD,DWORD,PVOID,PDNS_RECORDA*,PVOID*);
DNS_STATUS WINAPI DnsQuery_W(PCWSTR,WORD,DWORD,PVOID,PDNS_RECORDW*,PVOID*);
DNS_STATUS WINAPI DnsQuery_UTF8(PCSTR,WORD,DWORD,PVOID,PDNS_RECORDA*,PVOID*);
#define DnsQuery WINELIB_NAME_AW(DnsQuery_)
DNS_STATUS WINAPI DnsQueryConfig(DNS_CONFIG_TYPE,DWORD,PCWSTR,PVOID,PVOID,PDWORD);
BOOL WINAPI DnsRecordCompare(PDNS_RECORD,PDNS_RECORD);
PDNS_RECORD WINAPI DnsRecordCopyEx(PDNS_RECORD,DNS_CHARSET,DNS_CHARSET);
VOID WINAPI DnsRecordListFree(PDNS_RECORD,DNS_FREE_TYPE);
BOOL WINAPI DnsRecordSetCompare(PDNS_RECORD,PDNS_RECORD,PDNS_RECORD*,PDNS_RECORD*);
PDNS_RECORD WINAPI DnsRecordSetCopyEx(PDNS_RECORD,DNS_CHARSET,DNS_CHARSET);
PDNS_RECORD WINAPI DnsRecordSetDetach(PDNS_RECORD);
void WINAPI DnsReleaseContextHandle(HANDLE);
DNS_STATUS WINAPI DnsReplaceRecordSetA(PDNS_RECORDA,DWORD,HANDLE,PVOID,PVOID);
DNS_STATUS WINAPI DnsReplaceRecordSetW(PDNS_RECORDW,DWORD,HANDLE,PVOID,PVOID);
DNS_STATUS WINAPI DnsReplaceRecordSetUTF8(PDNS_RECORDA,DWORD,HANDLE,PVOID,PVOID);
#define DnsReplaceRecordSet WINELIB_NAME_AW(DnsReplaceRecordSet)
DNS_STATUS WINAPI DnsValidateName_A(PCSTR,DNS_NAME_FORMAT);
DNS_STATUS WINAPI DnsValidateName_W(PCWSTR, DNS_NAME_FORMAT);
DNS_STATUS WINAPI DnsValidateName_UTF8(PCSTR,DNS_NAME_FORMAT);
#define DnsValidateName WINELIB_NAME_AW(DnsValidateName_)
BOOL WINAPI DnsWriteQuestionToBuffer_W(PDNS_MESSAGE_BUFFER,PDWORD,PCWSTR,WORD,WORD,BOOL);
BOOL WINAPI DnsWriteQuestionToBuffer_UTF8(PDNS_MESSAGE_BUFFER,PDWORD,PCSTR,WORD,WORD,BOOL);
#ifdef __cplusplus
}
#endif
#endif