holdingarea/llvm/llvm-gcc4.2-2.7-x86-mingw32/include/windns.h
branchbug235_bringup_0
changeset 20 d2d6724aef32
equal deleted inserted replaced
19:da7c1a80df0d 20:d2d6724aef32
       
     1 #ifndef _WINDNS_H
       
     2 #define _WINDNS_H
       
     3 #if __GNUC__ >= 3
       
     4 #pragma GCC system_header
       
     5 #endif
       
     6 
       
     7 #ifdef __cplusplus
       
     8 extern "C" {
       
     9 #endif
       
    10 
       
    11 #define DNS_QUERY_STANDARD 0x0
       
    12 #define DNS_QUERY_ACCEPT_TRUNCATED_RESPONSE 0x1
       
    13 #define DNS_QUERY_USE_TCP_ONLY 0x2
       
    14 #define DNS_QUERY_NO_RECURSION 0x4
       
    15 #define DNS_QUERY_BYPASS_CACHE 0x8
       
    16 #define DNS_QUERY_NO_WIRE_QUERY	0x10
       
    17 #define DNS_QUERY_NO_LOCAL_NAME 0x20
       
    18 #define DNS_QUERY_NO_HOSTS_FILE 0x40
       
    19 #define DNS_QUERY_NO_NETBT 0x80
       
    20 #define DNS_QUERY_TREAT_AS_FQDN 0x1000
       
    21 #define DNS_QUERY_WIRE_ONLY 0x100
       
    22 #define DNS_QUERY_RETURN_MESSAGE 0x200
       
    23 #define DNS_QUERY_DONT_RESET_TTL_VALUES 0x100000
       
    24 #define DNS_QUERY_RESERVED 0xff000000
       
    25 
       
    26 #define DNS_UPDATE_SECURITY_USE_DEFAULT	0x0
       
    27 #define DNS_UPDATE_SECURITY_OFF 0x10
       
    28 #define DNS_UPDATE_SECURITY_ON 0x20
       
    29 #define DNS_UPDATE_SECURITY_ONLY 0x100
       
    30 #define DNS_UPDATE_CACHE_SECURITY_CONTEXT 0x200
       
    31 #define DNS_UPDATE_TEST_USE_LOCAL_SYS_ACCT 0x400
       
    32 #define DNS_UPDATE_FORCE_SECURITY_NEGO 0x800
       
    33 #define DNS_UPDATE_RESERVED 0xffff0000
       
    34 
       
    35 #ifndef RC_INVOKE
       
    36 typedef DWORD IP4_ADDRESS;
       
    37 typedef DWORD DNS_STATUS;
       
    38 enum {
       
    39 	DNS_TYPE_A=1,
       
    40 	DNS_TYPE_NS,
       
    41 	DNS_TYPE_MD,
       
    42 	DNS_TYPE_MF,
       
    43 	DNS_TYPE_CNAME,
       
    44 	DNS_TYPE_SOA,
       
    45 	DNS_TYPE_MB,
       
    46 	DNS_TYPE_MG,
       
    47 	DNS_TYPE_MR,
       
    48 	DNS_TYPE_NULL,
       
    49 	DNS_TYPE_WKS,
       
    50 	DNS_TYPE_PTR,
       
    51 	DNS_TYPE_HINFO,
       
    52 	DNS_TYPE_MINFO,
       
    53 	DNS_TYPE_MX,
       
    54 	DNS_TYPE_TEXT,
       
    55 	DNS_TYPE_RP,
       
    56 	DNS_TYPE_AFSDB,
       
    57 	DNS_TYPE_X25,
       
    58 	DNS_TYPE_ISDN,
       
    59 	DNS_TYPE_RT,
       
    60 	DNS_TYPE_NSAP,
       
    61 	DNS_TYPE_NSAPPTR,
       
    62 	DNS_TYPE_SIG,
       
    63 	DNS_TYPE_KEY,
       
    64 	DNS_TYPE_PX,
       
    65 	DNS_TYPE_GPOS,
       
    66 	DNS_TYPE_AAAA,
       
    67 	DNS_TYPE_LOC,
       
    68 	DNS_TYPE_NXT,
       
    69 	DNS_TYPE_EID,
       
    70 	DNS_TYPE_NIMLOC,
       
    71 	DNS_TYPE_SRV,
       
    72 	DNS_TYPE_ATMA,
       
    73 	DNS_TYPE_NAPTR,
       
    74 	DNS_TYPE_KX,
       
    75 	DNS_TYPE_CERT,
       
    76 	DNS_TYPE_A6,
       
    77 	DNS_TYPE_DNAME,
       
    78 	DNS_TYPE_SINK,
       
    79 	DNS_TYPE_OPT,
       
    80 	DNS_TYPE_UINFO=100,
       
    81 	DNS_TYPE_UID,
       
    82 	DNS_TYPE_GID,
       
    83 	DNS_TYPE_UNSPEC,
       
    84 	DNS_TYPE_ADDRS=248,
       
    85 	DNS_TYPE_TKEY,
       
    86 	DNS_TYPE_TSIG,
       
    87 	DNS_TYPE_IXFR,
       
    88 	DNS_TYPE_AXFR,
       
    89 	DNS_TYPE_MAILB,
       
    90 	DNS_TYPE_MAILA,
       
    91 	DNS_TYPE_ALL,
       
    92 	DNS_TYPE_ANY=DNS_TYPE_ALL
       
    93 };
       
    94 typedef enum _DNS_CHARSET
       
    95 {
       
    96 	DnsCharSetUnknown, 
       
    97 	DnsCharSetUnicode, 
       
    98 	DnsCharSetUtf8, 
       
    99 	DnsCharSetAnsi
       
   100 } DNS_CHARSET;
       
   101 typedef enum 
       
   102 {
       
   103 	DnsConfigPrimaryDomainName_W, 
       
   104 	DnsConfigPrimaryDomainName_A, 
       
   105 	DnsConfigPrimaryDomainName_UTF8, 
       
   106 	DnsConfigAdapterDomainName_W, 
       
   107 	DnsConfigAdapterDomainName_A, 
       
   108 	DnsConfigAdapterDomainName_UTF8, 
       
   109 	DnsConfigDnsServerList, 
       
   110 	DnsConfigSearchList, 
       
   111 	DnsConfigAdapterInfo, 
       
   112 	DnsConfigPrimaryHostNameRegistrationEnabled, 
       
   113 	DnsConfigAdapterHostNameRegistrationEnabled, 
       
   114 	DnsConfigAddressRegistrationMaxCount, 
       
   115 	DnsConfigHostName_W, 
       
   116 	DnsConfigHostName_A, 
       
   117 	DnsConfigHostName_UTF8, 
       
   118 	DnsConfigFullHostName_W, 
       
   119 	DnsConfigFullHostName_A, 
       
   120 	DnsConfigFullHostName_UTF8
       
   121 } DNS_CONFIG_TYPE;
       
   122 typedef enum 
       
   123 {
       
   124 	DnsFreeFlat = 0, 
       
   125 	DnsFreeRecordList, 
       
   126 	DnsFreeParsedMessageFields
       
   127 } DNS_FREE_TYPE;
       
   128 typedef enum _DNS_NAME_FORMAT
       
   129 {
       
   130 	DnsNameDomain, 
       
   131 	DnsNameDomainLabel, 
       
   132 	DnsNameHostnameFull, 
       
   133 	DnsNameHostnameLabel, 
       
   134 	DnsNameWildcard, 
       
   135 	DnsNameSrvRecord
       
   136 } DNS_NAME_FORMAT;
       
   137 typedef enum 
       
   138 {
       
   139 	DnsSectionQuestion, 
       
   140 	DnsSectionAnswer, 
       
   141 	DnsSectionAuthority, 
       
   142 	DnsSectionAdditional
       
   143 } DNS_SECTION;
       
   144 typedef struct _IP4_ARRAY {
       
   145 	DWORD AddrCount;
       
   146 	IP4_ADDRESS AddrArray[1];
       
   147 } IP4_ARRAY, *PIP4_ARRAY;
       
   148 typedef struct {
       
   149 	DWORD IP6Dword[4];
       
   150 } IP6_ADDRESS, *PIP6_ADDRESS, DNS_IP6_ADDRESS, *PDNS_IP6_ADDRESS;
       
   151 typedef struct _DNS_HEADER {
       
   152 	WORD Xid;
       
   153 	BYTE RecursionDesired;
       
   154 	BYTE Truncation;
       
   155 	BYTE Authoritative;
       
   156 	BYTE Opcode;
       
   157 	BYTE IsResponse;
       
   158 	BYTE ResponseCode;
       
   159 	BYTE Reserved;
       
   160 	BYTE RecursionAvailable;
       
   161 	WORD QuestionCount;
       
   162 	WORD AnswerCount;
       
   163 	WORD NameServerCount;
       
   164 	WORD AdditionalCount;
       
   165 } DNS_HEADER, *PDNS_HEADER;
       
   166 typedef struct _DNS_MESSAGE_BUFFER {
       
   167 	DNS_HEADER MessageHead;
       
   168 	CHAR MessageBody[1];
       
   169 } DNS_MESSAGE_BUFFER, *PDNS_MESSAGE_BUFFER;
       
   170 typedef struct _DnsRecordFlags {
       
   171 	DWORD Section	:2;
       
   172 	DWORD Delete	:1;
       
   173 	DWORD CharSet	:2;
       
   174 	DWORD Unused	:3;
       
   175 	DWORD Reserved	:24;
       
   176 } DNS_RECORD_FLAGS;
       
   177 #define DNSREC_QUESTION 0
       
   178 #define DNSREC_ANSWER 1
       
   179 #define DNSREC_AUTHORITY 2
       
   180 #define DNSREC_ADDITIONAL 3
       
   181 typedef struct {
       
   182 	IP4_ADDRESS IpAddress;
       
   183 } DNS_A_DATA, *PDNS_A_DATA;
       
   184 typedef struct {
       
   185 	DNS_IP6_ADDRESS Ip6Address;
       
   186 } DNS_AAAA_DATA, *PDNS_AAAA_DATA;
       
   187 #define DNS_ATMA_MAX_ADDR_LENGTH 20
       
   188 typedef struct {
       
   189 	BYTE AddressType;
       
   190 	BYTE Address[DNS_ATMA_MAX_ADDR_LENGTH];
       
   191 } DNS_ATMA_DATA, *PDNS_ATMA_DATA;
       
   192 typedef struct {
       
   193 	WORD wFlags;
       
   194 	BYTE chProtocol;
       
   195 	BYTE chAlgorithm;
       
   196 	BYTE Key[1];
       
   197 } DNS_KEY_DATA, *PDNS_KEY_DATA;
       
   198 typedef struct {
       
   199 	WORD wVersion;
       
   200 	WORD wSize;
       
   201 	WORD wHorPrec;
       
   202 	WORD wVerPrec;
       
   203 	DWORD dwLatitude;
       
   204 	DWORD dwLongitude;
       
   205 	DWORD dwAltitude;
       
   206 } DNS_LOC_DATA, *PDNS_LOC_DATA;
       
   207 typedef struct {
       
   208 	LPTSTR pNameMailbox;
       
   209 	LPTSTR pNameErrorsMailbox;
       
   210 } DNS_MINFO_DATA, *PDNS_MINFO_DATA;
       
   211 typedef struct {
       
   212 	LPTSTR pNameExchange;
       
   213 	WORD wPreference;
       
   214 	WORD Pad;
       
   215 } DNS_MX_DATA, *PDNS_MX_DATA;
       
   216 typedef struct {
       
   217 	DWORD dwByteCount;
       
   218 	BYTE Data[1];
       
   219 } DNS_NULL_DATA, *PDNS_NULL_DATA;
       
   220 typedef struct {
       
   221 	LPTSTR pNameNext;
       
   222 	WORD wNumTypes;
       
   223 	WORD wTypes[1];
       
   224 } DNS_NXT_DATA, *PDNS_NXT_DATA;
       
   225 typedef struct {
       
   226 	LPTSTR pNameHost;
       
   227 } DNS_PTR_DATA, *PDNS_PTR_DATA;
       
   228 typedef struct {
       
   229 	LPTSTR pNameSigner;
       
   230 	WORD wTypeCovered;
       
   231 	BYTE chAlgorithm;
       
   232 	BYTE chLabelCount;
       
   233 	DWORD dwOriginalTtl;
       
   234 	DWORD dwExpiration;
       
   235 	DWORD dwTimeSigned;
       
   236 	WORD wKeyTag;
       
   237 	WORD Pad;
       
   238 	BYTE Signature[1];
       
   239 } DNS_SIG_DATA, *PDNS_SIG_DATA;
       
   240 typedef struct {
       
   241 	LPTSTR pNamePrimaryServer;
       
   242 	LPTSTR pNameAdministrator;
       
   243 	DWORD dwSerialNo;
       
   244 	DWORD dwRefresh;
       
   245 	DWORD dwRetry;
       
   246 	DWORD dwExpire;
       
   247 	DWORD dwDefaultTtl;
       
   248 } DNS_SOA_DATA, *PDNS_SOA_DATA;
       
   249 typedef struct {
       
   250 	LPTSTR pNameTarget;
       
   251 	WORD wPriority;
       
   252 	WORD wWeight;
       
   253 	WORD wPort;
       
   254 	WORD Pad;
       
   255 } DNS_SRV_DATA, *PDNS_SRV_DATA;
       
   256 typedef struct {
       
   257 	DWORD dwStringCount;
       
   258 	LPTSTR pStringArray[1];
       
   259 } DNS_TXT_DATA, *PDNS_TXT_DATA;
       
   260 typedef struct {
       
   261 	LPTSTR pNameAlgorithm;
       
   262 	PBYTE pAlgorithmPacket;
       
   263 	PBYTE pKey;
       
   264 	PBYTE pOtherData;
       
   265 	DWORD dwCreateTime;
       
   266 	DWORD dwExpireTime;
       
   267 	WORD wMode;
       
   268 	WORD wError;
       
   269 	WORD wKeyLength;
       
   270 	WORD wOtherLength;
       
   271 	UCHAR cAlgNameLength;
       
   272 	BOOL bPacketPointers;
       
   273 } DNS_TKEY_DATA, *PDNS_TKEY_DATA;
       
   274 typedef struct {
       
   275 	LPTSTR pNameAlgorithm;
       
   276 	PBYTE pAlgorithmPacket;
       
   277 	PBYTE pSignature;
       
   278 	PBYTE pOtherData;
       
   279 	LONGLONG i64CreateTime;
       
   280 	WORD wFudgeTime;
       
   281 	WORD wOriginalXid;
       
   282 	WORD wError;
       
   283 	WORD wSigLength;
       
   284 	WORD wOtherLength;
       
   285 	UCHAR cAlgNameLength;
       
   286 	BOOL bPacketPointers;
       
   287 } DNS_TSIG_DATA, *PDNS_TSIG_DATA;
       
   288 typedef struct {
       
   289 	DWORD dwMappingFlag;
       
   290 	DWORD dwLookupTimeout;
       
   291 	DWORD dwCacheTimeout;
       
   292 	DWORD cWinsServerCount;
       
   293 	IP4_ADDRESS WinsServers[1];
       
   294 } DNS_WINS_DATA, *PDNS_WINS_DATA;
       
   295 typedef struct {
       
   296 	DWORD dwMappingFlag;
       
   297 	DWORD dwLookupTimeout;
       
   298 	DWORD dwCacheTimeout;
       
   299 	LPTSTR pNameResultDomain;
       
   300 } DNS_WINSR_DATA, *PDNS_WINSR_DATA;
       
   301 typedef struct _DNS_WIRE_QUESTION {
       
   302 	WORD QuestionType;
       
   303 	WORD QuestionClass;
       
   304 } DNS_WIRE_QUESTION, *PDNS_WIRE_QUESTION;
       
   305 typedef struct _DNS_WIRE_RECORD {
       
   306 	WORD RecordType;
       
   307 	WORD RecordClass;
       
   308 	DWORD TimeToLive;
       
   309 	WORD DataLength;
       
   310 } DNS_WIRE_RECORD, *PDNS_WIRE_RECORD;
       
   311 typedef struct {
       
   312 	IP4_ADDRESS IpAddress;
       
   313 	UCHAR chProtocol;
       
   314 	BYTE BitMask[1];
       
   315 } DNS_WKS_DATA, *PDNS_WKS_DATA;
       
   316 typedef struct _DnsRecord {
       
   317 	struct _DnsRecord* pNext;
       
   318 	LPTSTR pName;
       
   319 	WORD wType;
       
   320 	WORD wDataLength;
       
   321 	union {
       
   322 		DWORD DW;
       
   323 		DNS_RECORD_FLAGS S;
       
   324 	} Flags;
       
   325 	DWORD dwTtl;
       
   326 	DWORD dwReserved;
       
   327 	union {
       
   328 		DNS_A_DATA A;
       
   329 		DNS_SOA_DATA SOA, Soa;
       
   330 		DNS_PTR_DATA PTR, Ptr, NS, Ns, CNAME, Cname, MB, Mb,
       
   331 			     MD, Md, MF, Mf, MG, Mg, MR, Mr;
       
   332 		DNS_MINFO_DATA MINFO, Minfo, RP, Rp;
       
   333 		DNS_MX_DATA MX, Mx, AFSDB, Afsdb, RT, Rt;
       
   334 		DNS_TXT_DATA HINFO, Hinfo, ISDN, Isdn, TXT, Txt, X25;
       
   335 		DNS_NULL_DATA Null;
       
   336 		DNS_WKS_DATA WKS, Wks;
       
   337 		DNS_AAAA_DATA AAAA;
       
   338 		DNS_KEY_DATA KEY, Key;
       
   339 		DNS_SIG_DATA SIG, Sig;
       
   340 		DNS_ATMA_DATA ATMA, Atma;
       
   341 		DNS_NXT_DATA NXT, Nxt;
       
   342 		DNS_SRV_DATA SRV, Srv;
       
   343 		DNS_TKEY_DATA TKEY, Tkey;
       
   344 		DNS_TSIG_DATA TSIG, Tsig;
       
   345 		DNS_WINS_DATA WINS, Wins;
       
   346 		DNS_WINSR_DATA WINSR, WinsR, NBSTAT, Nbstat;
       
   347 	} Data;
       
   348 } DNS_RECORD, *PDNS_RECORD;
       
   349 typedef struct _DnsRRSet {
       
   350 	PDNS_RECORD pFirstRR;
       
   351 	PDNS_RECORD pLastRR;
       
   352 } DNS_RRSET, *PDNS_RRSET;
       
   353 
       
   354 DNS_STATUS WINAPI DnsAcquireContextHandle_A(DWORD,PVOID,HANDLE*);
       
   355 DNS_STATUS WINAPI DnsAcquireContextHandle_W(DWORD,PVOID,HANDLE*);
       
   356 DNS_STATUS WINAPI DnsExtractRecordsFromMessage_W(PDNS_MESSAGE_BUFFER,WORD,PDNS_RECORD*);
       
   357 DNS_STATUS WINAPI DnsExtractRecordsFromMessage_UTF8(PDNS_MESSAGE_BUFFER,WORD,PDNS_RECORD*);
       
   358 DNS_STATUS WINAPI DnsModifyRecordsInSet_A(PDNS_RECORD,PDNS_RECORD,DWORD,HANDLE,PIP4_ARRAY,PVOID);
       
   359 DNS_STATUS WINAPI DnsModifyRecordsInSet_W(PDNS_RECORD,PDNS_RECORD,DWORD,HANDLE,PIP4_ARRAY,PVOID);
       
   360 DNS_STATUS WINAPI DnsModifyRecordsInSet_UTF8(PDNS_RECORD,PDNS_RECORD,DWORD,HANDLE,PIP4_ARRAY,PVOID);
       
   361 BOOL WINAPI DnsNameCompare_A(LPSTR,LPSTR);
       
   362 BOOL WINAPI DnsNameCompare_W(LPWSTR,LPWSTR);
       
   363 DNS_STATUS WINAPI DnsQuery_A(PCSTR,WORD,DWORD,PIP4_ARRAY,PDNS_RECORD*,PVOID*);
       
   364 DNS_STATUS WINAPI DnsQuery_W(PCWSTR,WORD,DWORD,PIP4_ARRAY,PDNS_RECORD*,PVOID*);
       
   365 DNS_STATUS WINAPI DnsQuery_UTF8(PCSTR,WORD,DWORD,PIP4_ARRAY,PDNS_RECORD*,PVOID*);
       
   366 DNS_STATUS WINAPI DnsQueryConfig(DNS_CONFIG_TYPE,DWORD,PWSTR,PVOID,PVOID,PDWORD);
       
   367 BOOL WINAPI DnsRecordCompare(PDNS_RECORD,PDNS_RECORD);
       
   368 PDNS_RECORD WINAPI DnsRecordCopyEx(PDNS_RECORD,DNS_CHARSET,DNS_CHARSET);
       
   369 void WINAPI DnsRecordListFree(PDNS_RECORD,DNS_FREE_TYPE);
       
   370 BOOL WINAPI DnsRecordSetCompare(PDNS_RECORD,PDNS_RECORD,PDNS_RECORD*,PDNS_RECORD*);
       
   371 PDNS_RECORD WINAPI DnsRecordSetCopyEx(PDNS_RECORD,DNS_CHARSET,DNS_CHARSET);
       
   372 PDNS_RECORD WINAPI DnsRecordSetDetach(PDNS_RECORD);
       
   373 void WINAPI DnsReleaseContextHandle(HANDLE);
       
   374 DNS_STATUS WINAPI DnsReplaceRecordSetA(PDNS_RECORD,DWORD,HANDLE,PIP4_ARRAY,PVOID);
       
   375 DNS_STATUS WINAPI DnsReplaceRecordSetW(PDNS_RECORD,DWORD,HANDLE,PIP4_ARRAY,PVOID);
       
   376 DNS_STATUS WINAPI DnsReplaceRecordSetUTF8(PDNS_RECORD,DWORD,HANDLE,PIP4_ARRAY,PVOID);
       
   377 DNS_STATUS WINAPI DnsValidateName_A(LPCSTR,DNS_NAME_FORMAT);
       
   378 DNS_STATUS WINAPI DnsValidateName_W(LPCWSTR, DNS_NAME_FORMAT);
       
   379 DNS_STATUS WINAPI DnsValidateName_UTF8(LPCSTR,DNS_NAME_FORMAT);
       
   380 BOOL WINAPI DnsWriteQuestionToBuffer_W(PDNS_MESSAGE_BUFFER,LPDWORD,LPWSTR,WORD,WORD,BOOL);
       
   381 BOOL WINAPI DnsWriteQuestionToBuffer_UTF8(PDNS_MESSAGE_BUFFER,LPDWORD,LPSTR,WORD,WORD,BOOL);
       
   382 
       
   383 #ifdef UNICODE
       
   384 #define DnsAcquireContextHandle DnsAcquireContextHandle_W
       
   385 #define DnsModifyRecordsInSet DnsModifyRecordsInSet_W
       
   386 #define DnsNameCompare DnsNameCompare_W
       
   387 #define DnsQuery DnsQuery_W
       
   388 #define DnsReplaceRecordSet DnsReplaceRecordSetW
       
   389 #define DnsValidateName DnsValidateName_W
       
   390 #else
       
   391 #define DnsAcquireContextHandle DnsAcquireContextHandle_A
       
   392 #define DnsModifyRecordsInSet DnsModifyRecordsInSet_A
       
   393 #define DnsNameCompare DnsNameCompare_A
       
   394 #define DnsQuery DnsQuery_A
       
   395 #define DnsReplaceRecordSet DnsReplaceRecordSetA
       
   396 #define DnsValidateName DnsValidateName_A
       
   397 #endif
       
   398 
       
   399 #endif /* RC_INVOKED */
       
   400 
       
   401 #ifdef __cplusplus
       
   402 }
       
   403 #endif
       
   404 
       
   405 #endif /* _WINDNS_H */