OSDN Git Service

Make <windns.h> header effectively self-contained.
authorKeith Marshall <keith@users.osdn.me>
Fri, 23 Jun 2023 20:39:52 +0000 (21:39 +0100)
committerKeith Marshall <keith@users.osdn.me>
Fri, 23 Jun 2023 20:39:52 +0000 (21:39 +0100)
w32api/ChangeLog
w32api/include/windns.h

index 542f6b9..d69e63e 100644 (file)
@@ -1,3 +1,19 @@
+2023-06-23  Keith Marshall  <keith@users.osdn.me>
+
+       Make <windns.h> header effectively self-contained.
+
+       * include/windns.h: Tidy layout; assert copyright.
+       (GCC system_header) [__GNUC__ >= 3]: Remove prerequisite condition.
+       (windef.h): Include this, to support stand-alone use.
+       (_BEGIN_C_DECLS, _END_C_DECLS): Use them.
+       [! RC_INVOKE]: Incorrectly specified conditional; should be...
+       [! RC_INVOKED]: ...this; correct it.
+       [UNICODE vs. ! UNICODE] (__AW_EXTENDED__): Use it to declare...
+       (DnsAcquireContextHandle, DnsModifyRecordsInSet, DnsNameCompare)
+       (DnsQuery, DnsValidateName): ...these.
+       [UNICODE vs. ! UNICODE] (__AW_SUFFIXED__): Use it to declare...
+       (DnsReplaceRecordSet): ...this.
+
 2023-06-21  Keith Marshall  <keith@users.osdn.me>
 
        Make <winber.h> header effectively self-contained.
index e51dcf6..6c54a48 100644 (file)
+/*
+ * windns.h
+ *
+ * Windows Domain Name Service API.
+ *
+ * $Id$
+ *
+ * Written by Pierre A. Humblet <Pierre.Humblet@ieee.org>
+ * Copyright (C) 2004, 2007, 2023, MinGW.OSDN Project
+ *
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ *
+ */
 #ifndef _WINDNS_H
-#define _WINDNS_H
-#if __GNUC__ >= 3
 #pragma GCC system_header
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define DNS_QUERY_STANDARD 0x0
-#define DNS_QUERY_ACCEPT_TRUNCATED_RESPONSE 0x1
-#define DNS_QUERY_USE_TCP_ONLY 0x2
-#define DNS_QUERY_NO_RECURSION 0x4
-#define DNS_QUERY_BYPASS_CACHE 0x8
-#define DNS_QUERY_NO_WIRE_QUERY        0x10
-#define DNS_QUERY_NO_LOCAL_NAME 0x20
-#define DNS_QUERY_NO_HOSTS_FILE 0x40
-#define DNS_QUERY_NO_NETBT 0x80
-#define DNS_QUERY_TREAT_AS_FQDN 0x1000
-#define DNS_QUERY_WIRE_ONLY 0x100
-#define DNS_QUERY_RETURN_MESSAGE 0x200
-#define DNS_QUERY_DONT_RESET_TTL_VALUES 0x100000
-#define DNS_QUERY_RESERVED 0xff000000
-
-#define DNS_UPDATE_SECURITY_USE_DEFAULT        0x0
-#define DNS_UPDATE_SECURITY_OFF 0x10
-#define DNS_UPDATE_SECURITY_ON 0x20
-#define DNS_UPDATE_SECURITY_ONLY 0x100
-#define DNS_UPDATE_CACHE_SECURITY_CONTEXT 0x200
-#define DNS_UPDATE_TEST_USE_LOCAL_SYS_ACCT 0x400
-#define DNS_UPDATE_FORCE_SECURITY_NEGO 0x800
-#define DNS_UPDATE_RESERVED 0xffff0000
-
-#ifndef RC_INVOKE
+#define _WINDNS_H
+
+/* <windns.h> is NOT a free-standing header; it requires definitions
+ * from <windef.h>, to make it effectively self-contained.
+ */
+#include <windef.h>
+
+_BEGIN_C_DECLS
+
+#define DNS_QUERY_STANDARD                             0x0
+#define DNS_QUERY_ACCEPT_TRUNCATED_RESPONSE            0x1
+#define DNS_QUERY_USE_TCP_ONLY                         0x2
+#define DNS_QUERY_NO_RECURSION                         0x4
+#define DNS_QUERY_BYPASS_CACHE                         0x8
+#define DNS_QUERY_NO_WIRE_QUERY                       0x10
+#define DNS_QUERY_NO_LOCAL_NAME                       0x20
+#define DNS_QUERY_NO_HOSTS_FILE                       0x40
+#define DNS_QUERY_NO_NETBT                            0x80
+#define DNS_QUERY_TREAT_AS_FQDN                     0x1000
+#define DNS_QUERY_WIRE_ONLY                          0x100
+#define DNS_QUERY_RETURN_MESSAGE                     0x200
+#define DNS_QUERY_DONT_RESET_TTL_VALUES           0x100000
+#define DNS_QUERY_RESERVED                      0xFF000000
+
+#define DNS_UPDATE_SECURITY_USE_DEFAULT                0x0
+#define DNS_UPDATE_SECURITY_OFF                       0x10
+#define DNS_UPDATE_SECURITY_ON                        0x20
+#define DNS_UPDATE_SECURITY_ONLY                     0x100
+#define DNS_UPDATE_CACHE_SECURITY_CONTEXT            0x200
+#define DNS_UPDATE_TEST_USE_LOCAL_SYS_ACCT           0x400
+#define DNS_UPDATE_FORCE_SECURITY_NEGO               0x800
+#define DNS_UPDATE_RESERVED                     0xFFFF0000
+
+#ifndef RC_INVOKED
+
 typedef DWORD IP4_ADDRESS;
 typedef DWORD DNS_STATUS;
-enum {
-       DNS_TYPE_A=1,
-       DNS_TYPE_NS,
-       DNS_TYPE_MD,
-       DNS_TYPE_MF,
-       DNS_TYPE_CNAME,
-       DNS_TYPE_SOA,
-       DNS_TYPE_MB,
-       DNS_TYPE_MG,
-       DNS_TYPE_MR,
-       DNS_TYPE_NULL,
-       DNS_TYPE_WKS,
-       DNS_TYPE_PTR,
-       DNS_TYPE_HINFO,
-       DNS_TYPE_MINFO,
-       DNS_TYPE_MX,
-       DNS_TYPE_TEXT,
-       DNS_TYPE_RP,
-       DNS_TYPE_AFSDB,
-       DNS_TYPE_X25,
-       DNS_TYPE_ISDN,
-       DNS_TYPE_RT,
-       DNS_TYPE_NSAP,
-       DNS_TYPE_NSAPPTR,
-       DNS_TYPE_SIG,
-       DNS_TYPE_KEY,
-       DNS_TYPE_PX,
-       DNS_TYPE_GPOS,
-       DNS_TYPE_AAAA,
-       DNS_TYPE_LOC,
-       DNS_TYPE_NXT,
-       DNS_TYPE_EID,
-       DNS_TYPE_NIMLOC,
-       DNS_TYPE_SRV,
-       DNS_TYPE_ATMA,
-       DNS_TYPE_NAPTR,
-       DNS_TYPE_KX,
-       DNS_TYPE_CERT,
-       DNS_TYPE_A6,
-       DNS_TYPE_DNAME,
-       DNS_TYPE_SINK,
-       DNS_TYPE_OPT,
-       DNS_TYPE_UINFO=100,
-       DNS_TYPE_UID,
-       DNS_TYPE_GID,
-       DNS_TYPE_UNSPEC,
-       DNS_TYPE_ADDRS=248,
-       DNS_TYPE_TKEY,
-       DNS_TYPE_TSIG,
-       DNS_TYPE_IXFR,
-       DNS_TYPE_AXFR,
-       DNS_TYPE_MAILB,
-       DNS_TYPE_MAILA,
-       DNS_TYPE_ALL,
-       DNS_TYPE_ANY=DNS_TYPE_ALL
+
+enum
+{ DNS_TYPE_A           =         1,
+  DNS_TYPE_NS,
+  DNS_TYPE_MD,
+  DNS_TYPE_MF,
+  DNS_TYPE_CNAME,
+  DNS_TYPE_SOA,
+  DNS_TYPE_MB,
+  DNS_TYPE_MG,
+  DNS_TYPE_MR,
+  DNS_TYPE_NULL,
+  DNS_TYPE_WKS,
+  DNS_TYPE_PTR,
+  DNS_TYPE_HINFO,
+  DNS_TYPE_MINFO,
+  DNS_TYPE_MX,
+  DNS_TYPE_TEXT,
+  DNS_TYPE_RP,
+  DNS_TYPE_AFSDB,
+  DNS_TYPE_X25,
+  DNS_TYPE_ISDN,
+  DNS_TYPE_RT,
+  DNS_TYPE_NSAP,
+  DNS_TYPE_NSAPPTR,
+  DNS_TYPE_SIG,
+  DNS_TYPE_KEY,
+  DNS_TYPE_PX,
+  DNS_TYPE_GPOS,
+  DNS_TYPE_AAAA,
+  DNS_TYPE_LOC,
+  DNS_TYPE_NXT,
+  DNS_TYPE_EID,
+  DNS_TYPE_NIMLOC,
+  DNS_TYPE_SRV,
+  DNS_TYPE_ATMA,
+  DNS_TYPE_NAPTR,
+  DNS_TYPE_KX,
+  DNS_TYPE_CERT,
+  DNS_TYPE_A6,
+  DNS_TYPE_DNAME,
+  DNS_TYPE_SINK,
+  DNS_TYPE_OPT,
+  DNS_TYPE_UINFO       =       100,
+  DNS_TYPE_UID,
+  DNS_TYPE_GID,
+  DNS_TYPE_UNSPEC,
+  DNS_TYPE_ADDRS       =       248,
+  DNS_TYPE_TKEY,
+  DNS_TYPE_TSIG,
+  DNS_TYPE_IXFR,
+  DNS_TYPE_AXFR,
+  DNS_TYPE_MAILB,
+  DNS_TYPE_MAILA,
+  DNS_TYPE_ALL,
+  DNS_TYPE_ANY=DNS_TYPE_ALL
 };
-typedef enum _DNS_CHARSET
-{
-       DnsCharSetUnknown,
-       DnsCharSetUnicode,
-       DnsCharSetUtf8,
-       DnsCharSetAnsi
+
+typedef
+enum _DNS_CHARSET
+{ DnsCharSetUnknown,
+  DnsCharSetUnicode,
+  DnsCharSetUtf8,
+  DnsCharSetAnsi
 } DNS_CHARSET;
+
 typedef enum
-{
-       DnsConfigPrimaryDomainName_W,
-       DnsConfigPrimaryDomainName_A,
-       DnsConfigPrimaryDomainName_UTF8,
-       DnsConfigAdapterDomainName_W,
-       DnsConfigAdapterDomainName_A,
-       DnsConfigAdapterDomainName_UTF8,
-       DnsConfigDnsServerList,
-       DnsConfigSearchList,
-       DnsConfigAdapterInfo,
-       DnsConfigPrimaryHostNameRegistrationEnabled,
-       DnsConfigAdapterHostNameRegistrationEnabled,
-       DnsConfigAddressRegistrationMaxCount,
-       DnsConfigHostName_W,
-       DnsConfigHostName_A,
-       DnsConfigHostName_UTF8,
-       DnsConfigFullHostName_W,
-       DnsConfigFullHostName_A,
-       DnsConfigFullHostName_UTF8
+{ DnsConfigPrimaryDomainName_W,
+  DnsConfigPrimaryDomainName_A,
+  DnsConfigPrimaryDomainName_UTF8,
+  DnsConfigAdapterDomainName_W,
+  DnsConfigAdapterDomainName_A,
+  DnsConfigAdapterDomainName_UTF8,
+  DnsConfigDnsServerList,
+  DnsConfigSearchList,
+  DnsConfigAdapterInfo,
+  DnsConfigPrimaryHostNameRegistrationEnabled,
+  DnsConfigAdapterHostNameRegistrationEnabled,
+  DnsConfigAddressRegistrationMaxCount,
+  DnsConfigHostName_W,
+  DnsConfigHostName_A,
+  DnsConfigHostName_UTF8,
+  DnsConfigFullHostName_W,
+  DnsConfigFullHostName_A,
+  DnsConfigFullHostName_UTF8
 } DNS_CONFIG_TYPE;
+
 typedef enum
-{
-       DnsFreeFlat = 0,
-       DnsFreeRecordList,
-       DnsFreeParsedMessageFields
+{ DnsFreeFlat          =         0,
+  DnsFreeRecordList,
+  DnsFreeParsedMessageFields
 } DNS_FREE_TYPE;
-typedef enum _DNS_NAME_FORMAT
-{
-       DnsNameDomain,
-       DnsNameDomainLabel,
-       DnsNameHostnameFull,
-       DnsNameHostnameLabel,
-       DnsNameWildcard,
-       DnsNameSrvRecord
+
+typedef
+enum _DNS_NAME_FORMAT
+{ DnsNameDomain,
+  DnsNameDomainLabel,
+  DnsNameHostnameFull,
+  DnsNameHostnameLabel,
+  DnsNameWildcard,
+  DnsNameSrvRecord
 } DNS_NAME_FORMAT;
+
 typedef enum
-{
-       DnsSectionQuestion,
-       DnsSectionAnswer,
-       DnsSectionAuthority,
-       DnsSectionAdditional
+{ DnsSectionQuestion,
+  DnsSectionAnswer,
+  DnsSectionAuthority,
+  DnsSectionAdditional
 } DNS_SECTION;
-typedef struct _IP4_ARRAY {
-       DWORD AddrCount;
-       IP4_ADDRESS AddrArray[1];
+
+typedef
+struct _IP4_ARRAY
+{ DWORD                AddrCount;
+  IP4_ADDRESS          AddrArray[1];
 } IP4_ARRAY, *PIP4_ARRAY;
-typedef struct {
-       DWORD IP6Dword[4];
+
+typedef struct
+{ DWORD                IP6Dword[4];
 } IP6_ADDRESS, *PIP6_ADDRESS, DNS_IP6_ADDRESS, *PDNS_IP6_ADDRESS;
-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;
+
+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];
+
+typedef
+struct _DNS_MESSAGE_BUFFER
+{ DNS_HEADER           MessageHead;
+  CHAR                 MessageBody[1];
 } DNS_MESSAGE_BUFFER, *PDNS_MESSAGE_BUFFER;
-typedef struct _DnsRecordFlags {
-       DWORD Section   :2;
-       DWORD Delete    :1;
-       DWORD CharSet   :2;
-       DWORD Unused    :3;
-       DWORD Reserved  :24;
+
+typedef
+struct _DnsRecordFlags
+{ DWORD                Section  :  2;
+  DWORD                Delete   :  1;
+  DWORD                CharSet  :  2;
+  DWORD                Unused   :  3;
+  DWORD                Reserved : 24;
 } DNS_RECORD_FLAGS;
-#define DNSREC_QUESTION 0
-#define DNSREC_ANSWER 1
-#define DNSREC_AUTHORITY 2
-#define DNSREC_ADDITIONAL 3
-typedef struct {
-       IP4_ADDRESS IpAddress;
+
+#define DNSREC_QUESTION                  0
+#define DNSREC_ANSWER                    1
+#define DNSREC_AUTHORITY                 2
+#define DNSREC_ADDITIONAL                3
+
+typedef struct
+{ IP4_ADDRESS          IpAddress;
 } DNS_A_DATA, *PDNS_A_DATA;
-typedef struct {
-       DNS_IP6_ADDRESS Ip6Address;
+
+typedef struct
+{ DNS_IP6_ADDRESS      Ip6Address;
 } DNS_AAAA_DATA, *PDNS_AAAA_DATA;
-#define DNS_ATMA_MAX_ADDR_LENGTH 20
-typedef struct {
-       BYTE AddressType;
-       BYTE Address[DNS_ATMA_MAX_ADDR_LENGTH];
+
+#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 {
-       WORD wFlags;
-       BYTE chProtocol;
-       BYTE chAlgorithm;
-       BYTE Key[1];
+
+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;
+
+typedef struct
+{ WORD                 wVersion;
+  WORD                 wSize;
+  WORD                 wHorPrec;
+  WORD                 wVerPrec;
+  DWORD                dwLatitude;
+  DWORD                dwLongitude;
+  DWORD                dwAltitude;
 } DNS_LOC_DATA, *PDNS_LOC_DATA;
-typedef struct {
-       LPTSTR pNameMailbox;
-       LPTSTR pNameErrorsMailbox;
+
+typedef struct
+{ LPTSTR               pNameMailbox;
+  LPTSTR               pNameErrorsMailbox;
 } DNS_MINFO_DATA, *PDNS_MINFO_DATA;
-typedef struct {
-       LPTSTR pNameExchange;
-       WORD wPreference;
-       WORD Pad;
+
+typedef struct
+{ LPTSTR               pNameExchange;
+  WORD                 wPreference;
+  WORD                 Pad;
 } DNS_MX_DATA, *PDNS_MX_DATA;
-typedef struct {
-       DWORD dwByteCount;
-       BYTE Data[1];
+
+typedef struct
+{ DWORD                dwByteCount;
+  BYTE                 Data[1];
 } DNS_NULL_DATA, *PDNS_NULL_DATA;
-typedef struct {
-       LPTSTR pNameNext;
-       WORD wNumTypes;
-       WORD wTypes[1];
+
+typedef struct
+{ LPTSTR               pNameNext;
+  WORD                 wNumTypes;
+  WORD                 wTypes[1];
 } DNS_NXT_DATA, *PDNS_NXT_DATA;
-typedef struct {
-       LPTSTR pNameHost;
+
+typedef struct
+{ LPTSTR               pNameHost;
 } DNS_PTR_DATA, *PDNS_PTR_DATA;
-typedef struct {
-       LPTSTR pNameSigner;
-       WORD wTypeCovered;
-       BYTE chAlgorithm;
-       BYTE chLabelCount;
-       DWORD dwOriginalTtl;
-       DWORD dwExpiration;
-       DWORD dwTimeSigned;
-       WORD wKeyTag;
-       WORD Pad;
-       BYTE Signature[1];
+
+typedef struct
+{ LPTSTR               pNameSigner;
+  WORD                 wTypeCovered;
+  BYTE                 chAlgorithm;
+  BYTE                 chLabelCount;
+  DWORD                dwOriginalTtl;
+  DWORD                dwExpiration;
+  DWORD                dwTimeSigned;
+  WORD                 wKeyTag;
+  WORD                 Pad;
+  BYTE                 Signature[1];
 } DNS_SIG_DATA, *PDNS_SIG_DATA;
-typedef struct {
-       LPTSTR pNamePrimaryServer;
-       LPTSTR pNameAdministrator;
-       DWORD dwSerialNo;
-       DWORD dwRefresh;
-       DWORD dwRetry;
-       DWORD dwExpire;
-       DWORD dwDefaultTtl;
+
+typedef struct
+{ LPTSTR               pNamePrimaryServer;
+  LPTSTR               pNameAdministrator;
+  DWORD                dwSerialNo;
+  DWORD                dwRefresh;
+  DWORD                dwRetry;
+  DWORD                dwExpire;
+  DWORD                dwDefaultTtl;
 } DNS_SOA_DATA, *PDNS_SOA_DATA;
-typedef struct {
-       LPTSTR pNameTarget;
-       WORD wPriority;
-       WORD wWeight;
-       WORD wPort;
-       WORD Pad;
+
+typedef struct
+{ LPTSTR               pNameTarget;
+  WORD                 wPriority;
+  WORD                 wWeight;
+  WORD                 wPort;
+  WORD                 Pad;
 } DNS_SRV_DATA, *PDNS_SRV_DATA;
-typedef struct {
-       DWORD dwStringCount;
-       LPTSTR pStringArray[1];
+
+typedef struct
+{ DWORD                dwStringCount;
+  LPTSTR               pStringArray[1];
 } DNS_TXT_DATA, *PDNS_TXT_DATA;
-typedef struct {
-       LPTSTR pNameAlgorithm;
-       PBYTE pAlgorithmPacket;
-       PBYTE pKey;
-       PBYTE pOtherData;
-       DWORD dwCreateTime;
-       DWORD dwExpireTime;
-       WORD wMode;
-       WORD wError;
-       WORD wKeyLength;
-       WORD wOtherLength;
-       UCHAR cAlgNameLength;
-       BOOL bPacketPointers;
+
+typedef struct
+{ LPTSTR               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_DATA, *PDNS_TKEY_DATA;
-typedef struct {
-       LPTSTR pNameAlgorithm;
-       PBYTE pAlgorithmPacket;
-       PBYTE pSignature;
-       PBYTE pOtherData;
-       LONGLONG i64CreateTime;
-       WORD wFudgeTime;
-       WORD wOriginalXid;
-       WORD wError;
-       WORD wSigLength;
-       WORD wOtherLength;
-       UCHAR cAlgNameLength;
-       BOOL bPacketPointers;
+
+typedef struct
+{ LPTSTR               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_DATA, *PDNS_TSIG_DATA;
-typedef struct {
-       DWORD dwMappingFlag;
-       DWORD dwLookupTimeout;
-       DWORD dwCacheTimeout;
-       DWORD cWinsServerCount;
-       IP4_ADDRESS WinsServers[1];
+
+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;
-       LPTSTR pNameResultDomain;
+
+typedef struct
+{ DWORD                dwMappingFlag;
+  DWORD                dwLookupTimeout;
+  DWORD                dwCacheTimeout;
+  LPTSTR               pNameResultDomain;
 } DNS_WINSR_DATA, *PDNS_WINSR_DATA;
-typedef struct _DNS_WIRE_QUESTION {
-       WORD QuestionType;
-       WORD QuestionClass;
+
+typedef
+struct _DNS_WIRE_QUESTION
+{ WORD                 QuestionType;
+  WORD                 QuestionClass;
 } DNS_WIRE_QUESTION, *PDNS_WIRE_QUESTION;
-typedef struct _DNS_WIRE_RECORD {
-       WORD RecordType;
-       WORD RecordClass;
-       DWORD TimeToLive;
-       WORD DataLength;
+
+typedef
+struct _DNS_WIRE_RECORD
+{ WORD                 RecordType;
+  WORD                 RecordClass;
+  DWORD                TimeToLive;
+  WORD                 DataLength;
 } DNS_WIRE_RECORD, *PDNS_WIRE_RECORD;
-typedef struct {
-       IP4_ADDRESS IpAddress;
-       UCHAR chProtocol;
-       BYTE BitMask[1];
+
+typedef struct
+{ IP4_ADDRESS IpAddress;
+  UCHAR                chProtocol;
+  BYTE                 BitMask[1];
 } DNS_WKS_DATA, *PDNS_WKS_DATA;
-typedef struct _DnsRecord {
-       struct _DnsRecord* pNext;
-       LPTSTR pName;
-       WORD wType;
-       WORD wDataLength;
-       union {
-               DWORD DW;
-               DNS_RECORD_FLAGS S;
-       } Flags;
-       DWORD dwTtl;
-       DWORD dwReserved;
-       union {
-               DNS_A_DATA A;
-               DNS_SOA_DATA SOA, Soa;
-               DNS_PTR_DATA PTR, Ptr, NS, Ns, CNAME, Cname, MB, Mb,
-                            MD, Md, MF, Mf, MG, Mg, MR, Mr;
-               DNS_MINFO_DATA MINFO, Minfo, RP, Rp;
-               DNS_MX_DATA MX, Mx, AFSDB, Afsdb, RT, Rt;
-               DNS_TXT_DATA 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_DATA SIG, Sig;
-               DNS_ATMA_DATA ATMA, Atma;
-               DNS_NXT_DATA NXT, Nxt;
-               DNS_SRV_DATA SRV, Srv;
-               DNS_TKEY_DATA TKEY, Tkey;
-               DNS_TSIG_DATA TSIG, Tsig;
-               DNS_WINS_DATA WINS, Wins;
-               DNS_WINSR_DATA WINSR, WinsR, NBSTAT, Nbstat;
-       } Data;
+
+typedef
+struct _DnsRecord
+{
+  struct _DnsRecord* pNext;
+  LPTSTR               pName;
+  WORD                 wType;
+  WORD                 wDataLength;
+  union
+  { DWORD                DW;
+    DNS_RECORD_FLAGS     S;
+  }                    Flags;
+  DWORD                dwTtl;
+  DWORD                dwReserved;
+  union
+  { DNS_A_DATA           A;
+    DNS_SOA_DATA         SOA, Soa;
+    DNS_PTR_DATA         PTR, Ptr;
+    DNS_PTR_DATA         NS, Ns;
+    DNS_PTR_DATA         CNAME, Cname;
+    DNS_PTR_DATA         MB, Mb;
+    DNS_PTR_DATA         MD, Md;
+    DNS_PTR_DATA         MF, Mf;
+    DNS_PTR_DATA         MG, Mg;
+    DNS_PTR_DATA         MR, Mr;
+    DNS_MINFO_DATA       MINFO, Minfo;
+    DNS_MINFO_DATA       RP, Rp;
+    DNS_MX_DATA          MX, Mx;
+    DNS_MX_DATA          AFSDB, Afsdb;
+    DNS_MX_DATA          RT, Rt;
+    DNS_TXT_DATA         HINFO, Hinfo;
+    DNS_TXT_DATA         ISDN, Isdn;
+    DNS_TXT_DATA         TXT, Txt;
+    DNS_TXT_DATA         X25;
+    DNS_NULL_DATA        Null;
+    DNS_WKS_DATA         WKS, Wks;
+    DNS_AAAA_DATA        AAAA;
+    DNS_KEY_DATA         KEY, Key;
+    DNS_SIG_DATA         SIG, Sig;
+    DNS_ATMA_DATA        ATMA, Atma;
+    DNS_NXT_DATA         NXT, Nxt;
+    DNS_SRV_DATA         SRV, Srv;
+    DNS_TKEY_DATA        TKEY, Tkey;
+    DNS_TSIG_DATA        TSIG, Tsig;
+    DNS_WINS_DATA        WINS, Wins;
+    DNS_WINSR_DATA       WINSR, WinsR;
+    DNS_WINSR_DATA       NBSTAT, Nbstat;
+  }                    Data;
 } DNS_RECORD, *PDNS_RECORD;
-typedef struct _DnsRRSet {
-       PDNS_RECORD pFirstRR;
-       PDNS_RECORD pLastRR;
+
+typedef
+struct _DnsRRSet
+{ PDNS_RECORD          pFirstRR;
+  PDNS_RECORD          pLastRR;
 } DNS_RRSET, *PDNS_RRSET;
 
-DNS_STATUS WINAPI DnsAcquireContextHandle_A(DWORD,PVOID,HANDLE*);
-DNS_STATUS WINAPI DnsAcquireContextHandle_W(DWORD,PVOID,HANDLE*);
-DNS_STATUS WINAPI DnsExtractRecordsFromMessage_W(PDNS_MESSAGE_BUFFER,WORD,PDNS_RECORD*);
-DNS_STATUS WINAPI DnsExtractRecordsFromMessage_UTF8(PDNS_MESSAGE_BUFFER,WORD,PDNS_RECORD*);
-DNS_STATUS WINAPI DnsModifyRecordsInSet_A(PDNS_RECORD,PDNS_RECORD,DWORD,HANDLE,PIP4_ARRAY,PVOID);
-DNS_STATUS WINAPI DnsModifyRecordsInSet_W(PDNS_RECORD,PDNS_RECORD,DWORD,HANDLE,PIP4_ARRAY,PVOID);
-DNS_STATUS WINAPI DnsModifyRecordsInSet_UTF8(PDNS_RECORD,PDNS_RECORD,DWORD,HANDLE,PIP4_ARRAY,PVOID);
-BOOL WINAPI DnsNameCompare_A(LPSTR,LPSTR);
-BOOL WINAPI DnsNameCompare_W(LPWSTR,LPWSTR);
-DNS_STATUS WINAPI DnsQuery_A(PCSTR,WORD,DWORD,PIP4_ARRAY,PDNS_RECORD*,PVOID*);
-DNS_STATUS WINAPI DnsQuery_W(PCWSTR,WORD,DWORD,PIP4_ARRAY,PDNS_RECORD*,PVOID*);
-DNS_STATUS WINAPI DnsQuery_UTF8(PCSTR,WORD,DWORD,PIP4_ARRAY,PDNS_RECORD*,PVOID*);
-DNS_STATUS WINAPI DnsQueryConfig(DNS_CONFIG_TYPE,DWORD,PWSTR,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_RECORD,DWORD,HANDLE,PIP4_ARRAY,PVOID);
-DNS_STATUS WINAPI DnsReplaceRecordSetW(PDNS_RECORD,DWORD,HANDLE,PIP4_ARRAY,PVOID);
-DNS_STATUS WINAPI DnsReplaceRecordSetUTF8(PDNS_RECORD,DWORD,HANDLE,PIP4_ARRAY,PVOID);
-DNS_STATUS WINAPI DnsValidateName_A(LPCSTR,DNS_NAME_FORMAT);
-DNS_STATUS WINAPI DnsValidateName_W(LPCWSTR, DNS_NAME_FORMAT);
-DNS_STATUS WINAPI DnsValidateName_UTF8(LPCSTR,DNS_NAME_FORMAT);
-BOOL WINAPI DnsWriteQuestionToBuffer_W(PDNS_MESSAGE_BUFFER,LPDWORD,LPWSTR,WORD,WORD,BOOL);
-BOOL WINAPI DnsWriteQuestionToBuffer_UTF8(PDNS_MESSAGE_BUFFER,LPDWORD,LPSTR,WORD,WORD,BOOL);
-
-#ifdef UNICODE
-#define DnsAcquireContextHandle DnsAcquireContextHandle_W
-#define DnsModifyRecordsInSet DnsModifyRecordsInSet_W
-#define DnsNameCompare DnsNameCompare_W
-#define DnsQuery DnsQuery_W
-#define DnsReplaceRecordSet DnsReplaceRecordSetW
-#define DnsValidateName DnsValidateName_W
-#else
-#define DnsAcquireContextHandle DnsAcquireContextHandle_A
-#define DnsModifyRecordsInSet DnsModifyRecordsInSet_A
-#define DnsNameCompare DnsNameCompare_A
-#define DnsQuery DnsQuery_A
-#define DnsReplaceRecordSet DnsReplaceRecordSetA
-#define DnsValidateName DnsValidateName_A
-#endif
-
-#endif /* RC_INVOKED */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _WINDNS_H */
+#define DnsAcquireContextHandle __AW_EXTENDED__(DnsAcquireContextHandle)
+DNS_STATUS WINAPI DnsAcquireContextHandle_A (DWORD, PVOID, HANDLE *);
+DNS_STATUS WINAPI DnsAcquireContextHandle_W (DWORD, PVOID, HANDLE *);
+
+DNS_STATUS WINAPI DnsExtractRecordsFromMessage_W (PDNS_MESSAGE_BUFFER, WORD, PDNS_RECORD *);
+DNS_STATUS WINAPI DnsExtractRecordsFromMessage_UTF8 (PDNS_MESSAGE_BUFFER, WORD, PDNS_RECORD *);
+
+#define DnsModifyRecordsInSet __AW_EXTENDED__(DnsModifyRecordsInSet)
+DNS_STATUS WINAPI DnsModifyRecordsInSet_A (PDNS_RECORD, PDNS_RECORD, DWORD, HANDLE, PIP4_ARRAY, PVOID);
+DNS_STATUS WINAPI DnsModifyRecordsInSet_W (PDNS_RECORD, PDNS_RECORD, DWORD, HANDLE, PIP4_ARRAY, PVOID);
+DNS_STATUS WINAPI DnsModifyRecordsInSet_UTF8 (PDNS_RECORD, PDNS_RECORD, DWORD, HANDLE, PIP4_ARRAY, PVOID);
+
+#define DnsNameCompare __AW_EXTENDED__(DnsNameCompare)
+BOOL WINAPI DnsNameCompare_A (LPSTR, LPSTR);
+BOOL WINAPI DnsNameCompare_W (LPWSTR, LPWSTR);
+
+#define DnsQuery __AW_EXTENDED__(DnsQuery)
+DNS_STATUS WINAPI DnsQuery_A (PCSTR, WORD, DWORD, PIP4_ARRAY, PDNS_RECORD *, PVOID *);
+DNS_STATUS WINAPI DnsQuery_W (PCWSTR,WORD,DWORD,PIP4_ARRAY,PDNS_RECORD *,PVOID *);
+DNS_STATUS WINAPI DnsQuery_UTF8 (PCSTR, WORD, DWORD, PIP4_ARRAY, PDNS_RECORD *, PVOID *);
+
+DNS_STATUS WINAPI DnsQueryConfig (DNS_CONFIG_TYPE, DWORD, PWSTR, 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);
+
+#define DnsReplaceRecordSet __AW_SUFFIXED__(DnsReplaceRecordSet)
+DNS_STATUS WINAPI DnsReplaceRecordSetA (PDNS_RECORD, DWORD, HANDLE, PIP4_ARRAY, PVOID);
+DNS_STATUS WINAPI DnsReplaceRecordSetW (PDNS_RECORD, DWORD, HANDLE, PIP4_ARRAY, PVOID);
+DNS_STATUS WINAPI DnsReplaceRecordSetUTF8 (PDNS_RECORD, DWORD, HANDLE, PIP4_ARRAY, PVOID);
+
+#define DnsValidateName __AW_EXTENDED__(DnsValidateName)
+DNS_STATUS WINAPI DnsValidateName_A (LPCSTR, DNS_NAME_FORMAT);
+DNS_STATUS WINAPI DnsValidateName_W (LPCWSTR, DNS_NAME_FORMAT);
+DNS_STATUS WINAPI DnsValidateName_UTF8 (LPCSTR, DNS_NAME_FORMAT);
+
+BOOL WINAPI DnsWriteQuestionToBuffer_W (PDNS_MESSAGE_BUFFER, LPDWORD, LPWSTR, WORD, WORD, BOOL);
+BOOL WINAPI DnsWriteQuestionToBuffer_UTF8 (PDNS_MESSAGE_BUFFER, LPDWORD, LPSTR, WORD, WORD, BOOL);
+
+#endif /* ! RC_INVOKED */
+
+_END_C_DECLS
+
+#endif /* !_WINDNS_H: $RCSfile$: end of file */