Mercurial > games > semicongine
comparison fuhtark_test/include/winapi/windns.h @ 1500:91c8c3b7cbf0
add: futhark tests for generating vulkan api
| author | sam <sam@basx.dev> |
|---|---|
| date | Wed, 26 Nov 2025 21:36:48 +0700 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| 1499:1f58458b7ef7 | 1500:91c8c3b7cbf0 |
|---|---|
| 1 /** | |
| 2 * This file has no copyright assigned and is placed in the Public Domain. | |
| 3 * This file is part of the w64 mingw-runtime package. | |
| 4 * No warranty is given; refer to the file DISCLAIMER within this package. | |
| 5 */ | |
| 6 #ifndef _WINDNS_INCLUDED_ | |
| 7 #define _WINDNS_INCLUDED_ | |
| 8 | |
| 9 #ifdef __cplusplus | |
| 10 extern "C" { | |
| 11 #endif | |
| 12 | |
| 13 __MINGW_EXTENSION typedef unsigned __int64 QWORD,*PQWORD; | |
| 14 typedef LONG DNS_STATUS,*PDNS_STATUS; | |
| 15 typedef DWORD IP4_ADDRESS,*PIP4_ADDRESS; | |
| 16 | |
| 17 #define SIZEOF_IP4_ADDRESS (4) | |
| 18 #define IP4_ADDRESS_STRING_LENGTH (15) | |
| 19 #define IP4_ADDRESS_STRING_BUFFER_LENGTH (16) | |
| 20 | |
| 21 typedef struct _IP4_ARRAY { | |
| 22 DWORD AddrCount; | |
| 23 IP4_ADDRESS AddrArray[1]; | |
| 24 } IP4_ARRAY,*PIP4_ARRAY; | |
| 25 | |
| 26 typedef union { | |
| 27 #ifdef _WIN64 | |
| 28 QWORD IP6Qword[2]; | |
| 29 #endif | |
| 30 DWORD IP6Dword[4]; | |
| 31 WORD IP6Word[8]; | |
| 32 BYTE IP6Byte[16]; | |
| 33 #ifdef IN6_ADDR | |
| 34 IN6_ADDR In6; | |
| 35 #endif | |
| 36 } IP6_ADDRESS,*PIP6_ADDRESS; | |
| 37 | |
| 38 #undef IP6_ADDRESS_STRING_LENGTH | |
| 39 #define IP6_ADDRESS_STRING_LENGTH (47) | |
| 40 #define IP6_ADDRESS_STRING_BUFFER_LENGTH (48) | |
| 41 | |
| 42 #define INLINE_WORD_FLIP(out,in) { WORD _in = (in); (out) = (_in << 8) | (_in >> 8); } | |
| 43 #define INLINE_HTONS(out,in) INLINE_WORD_FLIP(out,in) | |
| 44 #define INLINE_NTOHS(out,in) INLINE_WORD_FLIP(out,in) | |
| 45 #define INLINE_DWORD_FLIP(out,in) { DWORD _in = (in); (out) = ((_in << 8) & 0x00ff0000) | (_in << 24) | ((_in >> 8) & 0x0000ff00) | (_in >> 24); } | |
| 46 #define INLINE_NTOHL(out,in) INLINE_DWORD_FLIP(out,in) | |
| 47 #define INLINE_HTONL(out,in) INLINE_DWORD_FLIP(out,in) | |
| 48 #define INLINE_WRITE_FLIPPED_WORD(pout,in) INLINE_WORD_FLIP(*((UNALIGNED WORD *)(pout)),in) | |
| 49 #define INLINE_WRITE_FLIPPED_DWORD(pout,in) INLINE_DWORD_FLIP(*((UNALIGNED DWORD *)(pout)),in) | |
| 50 | |
| 51 #define DNS_PORT_HOST_ORDER (0x0035) | |
| 52 #define DNS_PORT_NET_ORDER (0x3500) | |
| 53 #define DNS_RFC_MAX_UDP_PACKET_LENGTH (512) | |
| 54 #define DNS_MAX_NAME_LENGTH (255) | |
| 55 #define DNS_MAX_LABEL_LENGTH (63) | |
| 56 #define DNS_MAX_NAME_BUFFER_LENGTH (256) | |
| 57 #define DNS_MAX_LABEL_BUFFER_LENGTH (64) | |
| 58 #define DNS_IP4_REVERSE_DOMAIN_STRING_A ("in-addr.arpa.") | |
| 59 #define DNS_IP4_REVERSE_DOMAIN_STRING_W (L"in-addr.arpa.") | |
| 60 #define DNS_MAX_IP4_REVERSE_NAME_LENGTH (IP4_ADDRESS_STRING_LENGTH+1+sizeof(DNS_IP4_REVERSE_DOMAIN_STRING_A)) | |
| 61 #define DNS_MAX_IP4_REVERSE_NAME_BUFFER_LENGTH (DNS_MAX_IP4_REVERSE_NAME_LENGTH + 1) | |
| 62 #define DNS_IP6_REVERSE_DOMAIN_STRING_A ("ip6.arpa.") | |
| 63 #define DNS_IP6_REVERSE_DOMAIN_STRING_W (L"ip6.arpa.") | |
| 64 #define DNS_MAX_IP6_REVERSE_NAME_LENGTH (64+sizeof(DNS_IP6_REVERSE_DOMAIN_STRING_A)) | |
| 65 #define DNS_MAX_IP6_REVERSE_NAME_BUFFER_LENGTH (DNS_MAX_IP6_REVERSE_NAME_LENGTH + 1) | |
| 66 #define DNS_MAX_REVERSE_NAME_LENGTH DNS_MAX_IP6_REVERSE_NAME_LENGTH | |
| 67 #define DNS_MAX_REVERSE_NAME_BUFFER_LENGTH DNS_MAX_IP6_REVERSE_NAME_BUFFER_LENGTH | |
| 68 | |
| 69 #ifdef UNICODE | |
| 70 #define DNS_IP4_REVERSE_DOMAIN_STRING DNS_IP4_REVERSE_DOMAIN_STRING_W | |
| 71 #define DNS_IP6_REVERSE_DOMAIN_STRING DNS_IP6_REVERSE_DOMAIN_STRING_W | |
| 72 #else | |
| 73 #define DNS_IP4_REVERSE_DOMAIN_STRING DNS_IP4_REVERSE_DOMAIN_STRING_A | |
| 74 #define DNS_IP6_REVERSE_DOMAIN_STRING DNS_IP6_REVERSE_DOMAIN_STRING_A | |
| 75 #endif | |
| 76 | |
| 77 #define DNS_MAX_TEXT_STRING_LENGTH (255) | |
| 78 | |
| 79 #pragma pack(1) | |
| 80 | |
| 81 typedef struct _DNS_HEADER { | |
| 82 WORD Xid; | |
| 83 BYTE RecursionDesired : 1; | |
| 84 BYTE Truncation : 1; | |
| 85 BYTE Authoritative : 1; | |
| 86 BYTE Opcode : 4; | |
| 87 BYTE IsResponse : 1; | |
| 88 BYTE ResponseCode : 4; | |
| 89 BYTE Reserved : 3; | |
| 90 BYTE RecursionAvailable : 1; | |
| 91 WORD QuestionCount; | |
| 92 WORD AnswerCount; | |
| 93 WORD NameServerCount; | |
| 94 WORD AdditionalCount; | |
| 95 } DNS_HEADER,*PDNS_HEADER; | |
| 96 | |
| 97 #define DNS_HEADER_FLAGS(pHead) (*((PWORD)(pHead)+1)) | |
| 98 #define DNS_BYTE_FLIP_HEADER_COUNTS(pHeader) { PDNS_HEADER _head = (pHeader); INLINE_HTONS(_head->Xid,_head->Xid); INLINE_HTONS(_head->QuestionCount,_head->QuestionCount); INLINE_HTONS(_head->AnswerCount,_head->AnswerCount); INLINE_HTONS(_head->NameServerCount,_head->NameServerCount); INLINE_HTONS(_head->AdditionalCount,_head->AdditionalCount); } | |
| 99 #define DNS_OFFSET_TO_QUESTION_NAME sizeof(DNS_HEADER) | |
| 100 #define DNS_COMPRESSED_QUESTION_NAME (0xC00C) | |
| 101 #define DNS_QUESTION_NAME_FROM_HEADER(_pHeader_) ((PCHAR)((PDNS_HEADER)(_pHeader_) + 1)) | |
| 102 #define DNS_ANSWER_FROM_QUESTION(_pQuestion_) ((PCHAR)((PDNS_QUESTION)(_pQuestion_) + 1)) | |
| 103 | |
| 104 typedef struct _DNS_WIRE_QUESTION { | |
| 105 WORD QuestionType; | |
| 106 WORD QuestionClass; | |
| 107 } DNS_WIRE_QUESTION,*PDNS_WIRE_QUESTION; | |
| 108 | |
| 109 typedef struct _DNS_WIRE_RECORD { | |
| 110 WORD RecordType; | |
| 111 WORD RecordClass; | |
| 112 DWORD TimeToLive; | |
| 113 WORD DataLength; | |
| 114 } DNS_WIRE_RECORD,*PDNS_WIRE_RECORD; | |
| 115 | |
| 116 #pragma pack() | |
| 117 | |
| 118 #define DNS_OPCODE_QUERY 0 | |
| 119 #define DNS_OPCODE_IQUERY 1 | |
| 120 #define DNS_OPCODE_SERVER_STATUS 2 | |
| 121 #define DNS_OPCODE_UNKNOWN 3 | |
| 122 #define DNS_OPCODE_NOTIFY 4 | |
| 123 #define DNS_OPCODE_UPDATE 5 | |
| 124 | |
| 125 #define DNS_RCODE_NOERROR 0 | |
| 126 #define DNS_RCODE_FORMERR 1 | |
| 127 #define DNS_RCODE_SERVFAIL 2 | |
| 128 #define DNS_RCODE_NXDOMAIN 3 | |
| 129 #define DNS_RCODE_NOTIMPL 4 | |
| 130 #define DNS_RCODE_REFUSED 5 | |
| 131 #define DNS_RCODE_YXDOMAIN 6 | |
| 132 #define DNS_RCODE_YXRRSET 7 | |
| 133 #define DNS_RCODE_NXRRSET 8 | |
| 134 #define DNS_RCODE_NOTAUTH 9 | |
| 135 #define DNS_RCODE_NOTZONE 10 | |
| 136 #define DNS_RCODE_MAX 15 | |
| 137 #define DNS_RCODE_BADVERS 16 | |
| 138 #define DNS_RCODE_BADSIG 16 | |
| 139 #define DNS_RCODE_BADKEY 17 | |
| 140 #define DNS_RCODE_BADTIME 18 | |
| 141 #define DNS_RCODE_NO_ERROR DNS_RCODE_NOERROR | |
| 142 #define DNS_RCODE_FORMAT_ERROR DNS_RCODE_FORMERR | |
| 143 #define DNS_RCODE_SERVER_FAILURE DNS_RCODE_SERVFAIL | |
| 144 #define DNS_RCODE_NAME_ERROR DNS_RCODE_NXDOMAIN | |
| 145 #define DNS_RCODE_NOT_IMPLEMENTED DNS_RCODE_NOTIMPL | |
| 146 | |
| 147 #define DNS_CLASS_INTERNET 0x0001 | |
| 148 #define DNS_CLASS_CSNET 0x0002 | |
| 149 #define DNS_CLASS_CHAOS 0x0003 | |
| 150 #define DNS_CLASS_HESIOD 0x0004 | |
| 151 #define DNS_CLASS_NONE 0x00fe | |
| 152 #define DNS_CLASS_ALL 0x00ff | |
| 153 #define DNS_CLASS_ANY 0x00ff | |
| 154 | |
| 155 #define DNS_RCLASS_INTERNET 0x0100 | |
| 156 #define DNS_RCLASS_CSNET 0x0200 | |
| 157 #define DNS_RCLASS_CHAOS 0x0300 | |
| 158 #define DNS_RCLASS_HESIOD 0x0400 | |
| 159 #define DNS_RCLASS_NONE 0xfe00 | |
| 160 #define DNS_RCLASS_ALL 0xff00 | |
| 161 #define DNS_RCLASS_ANY 0xff00 | |
| 162 | |
| 163 #define DNS_TYPE_ZERO 0x0000 | |
| 164 #define DNS_TYPE_A 0x0001 | |
| 165 #define DNS_TYPE_NS 0x0002 | |
| 166 #define DNS_TYPE_MD 0x0003 | |
| 167 #define DNS_TYPE_MF 0x0004 | |
| 168 #define DNS_TYPE_CNAME 0x0005 | |
| 169 #define DNS_TYPE_SOA 0x0006 | |
| 170 #define DNS_TYPE_MB 0x0007 | |
| 171 #define DNS_TYPE_MG 0x0008 | |
| 172 #define DNS_TYPE_MR 0x0009 | |
| 173 #define DNS_TYPE_NULL 0x000a | |
| 174 #define DNS_TYPE_WKS 0x000b | |
| 175 #define DNS_TYPE_PTR 0x000c | |
| 176 #define DNS_TYPE_HINFO 0x000d | |
| 177 #define DNS_TYPE_MINFO 0x000e | |
| 178 #define DNS_TYPE_MX 0x000f | |
| 179 #define DNS_TYPE_TEXT 0x0010 | |
| 180 #define DNS_TYPE_RP 0x0011 | |
| 181 #define DNS_TYPE_AFSDB 0x0012 | |
| 182 #define DNS_TYPE_X25 0x0013 | |
| 183 #define DNS_TYPE_ISDN 0x0014 | |
| 184 #define DNS_TYPE_RT 0x0015 | |
| 185 #define DNS_TYPE_NSAP 0x0016 | |
| 186 #define DNS_TYPE_NSAPPTR 0x0017 | |
| 187 #define DNS_TYPE_SIG 0x0018 | |
| 188 #define DNS_TYPE_KEY 0x0019 | |
| 189 #define DNS_TYPE_PX 0x001a | |
| 190 #define DNS_TYPE_GPOS 0x001b | |
| 191 #define DNS_TYPE_AAAA 0x001c | |
| 192 #define DNS_TYPE_LOC 0x001d | |
| 193 #define DNS_TYPE_NXT 0x001e | |
| 194 #define DNS_TYPE_EID 0x001f | |
| 195 #define DNS_TYPE_NIMLOC 0x0020 | |
| 196 #define DNS_TYPE_SRV 0x0021 | |
| 197 #define DNS_TYPE_ATMA 0x0022 | |
| 198 #define DNS_TYPE_NAPTR 0x0023 | |
| 199 #define DNS_TYPE_KX 0x0024 | |
| 200 #define DNS_TYPE_CERT 0x0025 | |
| 201 #define DNS_TYPE_A6 0x0026 | |
| 202 #define DNS_TYPE_DNAME 0x0027 | |
| 203 #define DNS_TYPE_SINK 0x0028 | |
| 204 #define DNS_TYPE_OPT 0x0029 | |
| 205 #define DNS_TYPE_UINFO 0x0064 | |
| 206 #define DNS_TYPE_UID 0x0065 | |
| 207 #define DNS_TYPE_GID 0x0066 | |
| 208 #define DNS_TYPE_UNSPEC 0x0067 | |
| 209 #define DNS_TYPE_ADDRS 0x00f8 | |
| 210 #define DNS_TYPE_TKEY 0x00f9 | |
| 211 #define DNS_TYPE_TSIG 0x00fa | |
| 212 #define DNS_TYPE_IXFR 0x00fb | |
| 213 #define DNS_TYPE_AXFR 0x00fc | |
| 214 #define DNS_TYPE_MAILB 0x00fd | |
| 215 #define DNS_TYPE_MAILA 0x00fe | |
| 216 #define DNS_TYPE_ALL 0x00ff | |
| 217 #define DNS_TYPE_ANY 0x00ff | |
| 218 #define DNS_TYPE_WINS 0xff01 | |
| 219 #define DNS_TYPE_WINSR 0xff02 | |
| 220 #define DNS_TYPE_NBSTAT (DNS_TYPE_WINSR) | |
| 221 | |
| 222 #define DNS_RTYPE_A 0x0100 | |
| 223 #define DNS_RTYPE_NS 0x0200 | |
| 224 #define DNS_RTYPE_MD 0x0300 | |
| 225 #define DNS_RTYPE_MF 0x0400 | |
| 226 #define DNS_RTYPE_CNAME 0x0500 | |
| 227 #define DNS_RTYPE_SOA 0x0600 | |
| 228 #define DNS_RTYPE_MB 0x0700 | |
| 229 #define DNS_RTYPE_MG 0x0800 | |
| 230 #define DNS_RTYPE_MR 0x0900 | |
| 231 #define DNS_RTYPE_NULL 0x0a00 | |
| 232 #define DNS_RTYPE_WKS 0x0b00 | |
| 233 #define DNS_RTYPE_PTR 0x0c00 | |
| 234 #define DNS_RTYPE_HINFO 0x0d00 | |
| 235 #define DNS_RTYPE_MINFO 0x0e00 | |
| 236 #define DNS_RTYPE_MX 0x0f00 | |
| 237 #define DNS_RTYPE_TEXT 0x1000 | |
| 238 #define DNS_RTYPE_RP 0x1100 | |
| 239 #define DNS_RTYPE_AFSDB 0x1200 | |
| 240 #define DNS_RTYPE_X25 0x1300 | |
| 241 #define DNS_RTYPE_ISDN 0x1400 | |
| 242 #define DNS_RTYPE_RT 0x1500 | |
| 243 #define DNS_RTYPE_NSAP 0x1600 | |
| 244 #define DNS_RTYPE_NSAPPTR 0x1700 | |
| 245 #define DNS_RTYPE_SIG 0x1800 | |
| 246 #define DNS_RTYPE_KEY 0x1900 | |
| 247 #define DNS_RTYPE_PX 0x1a00 | |
| 248 #define DNS_RTYPE_GPOS 0x1b00 | |
| 249 #define DNS_RTYPE_AAAA 0x1c00 | |
| 250 #define DNS_RTYPE_LOC 0x1d00 | |
| 251 #define DNS_RTYPE_NXT 0x1e00 | |
| 252 #define DNS_RTYPE_EID 0x1f00 | |
| 253 #define DNS_RTYPE_NIMLOC 0x2000 | |
| 254 #define DNS_RTYPE_SRV 0x2100 | |
| 255 #define DNS_RTYPE_ATMA 0x2200 | |
| 256 #define DNS_RTYPE_NAPTR 0x2300 | |
| 257 #define DNS_RTYPE_KX 0x2400 | |
| 258 #define DNS_RTYPE_CERT 0x2500 | |
| 259 #define DNS_RTYPE_A6 0x2600 | |
| 260 #define DNS_RTYPE_DNAME 0x2700 | |
| 261 #define DNS_RTYPE_SINK 0x2800 | |
| 262 #define DNS_RTYPE_OPT 0x2900 | |
| 263 #define DNS_RTYPE_UINFO 0x6400 | |
| 264 #define DNS_RTYPE_UID 0x6500 | |
| 265 #define DNS_RTYPE_GID 0x6600 | |
| 266 #define DNS_RTYPE_UNSPEC 0x6700 | |
| 267 #define DNS_RTYPE_TKEY 0xf900 | |
| 268 #define DNS_RTYPE_TSIG 0xfa00 | |
| 269 #define DNS_RTYPE_IXFR 0xfb00 | |
| 270 #define DNS_RTYPE_AXFR 0xfc00 | |
| 271 #define DNS_RTYPE_MAILB 0xfd00 | |
| 272 #define DNS_RTYPE_MAILA 0xfe00 | |
| 273 #define DNS_RTYPE_ALL 0xff00 | |
| 274 #define DNS_RTYPE_ANY 0xff00 | |
| 275 #define DNS_RTYPE_WINS 0x01ff | |
| 276 #define DNS_RTYPE_WINSR 0x02ff | |
| 277 | |
| 278 #ifndef ATMA_E164 | |
| 279 #define DNS_ATMA_FORMAT_E164 1 | |
| 280 #define DNS_ATMA_FORMAT_AESA 2 | |
| 281 #define DNS_ATMA_MAX_ADDR_LENGTH (20) | |
| 282 #else | |
| 283 #define DNS_ATMA_FORMAT_E164 ATM_E164 | |
| 284 #define DNS_ATMA_FORMAT_AESA ATM_AESA | |
| 285 #define DNS_ATMA_MAX_ADDR_LENGTH ATM_ADDR_SIZE | |
| 286 #endif | |
| 287 | |
| 288 #define DNS_ATMA_AESA_ADDR_LENGTH (20) | |
| 289 #define DNS_ATMA_MAX_RECORD_LENGTH (DNS_ATMA_MAX_ADDR_LENGTH+1) | |
| 290 | |
| 291 #define DNSSEC_ALGORITHM_RSAMD5 1 | |
| 292 #define DNSSEC_ALGORITHM_NULL 253 | |
| 293 #define DNSSEC_ALGORITHM_PRIVATE 254 | |
| 294 | |
| 295 #define DNSSEC_PROTOCOL_NONE 0 | |
| 296 #define DNSSEC_PROTOCOL_TLS 1 | |
| 297 #define DNSSEC_PROTOCOL_EMAIL 2 | |
| 298 #define DNSSEC_PROTOCOL_DNSSEC 3 | |
| 299 #define DNSSEC_PROTOCOL_IPSEC 4 | |
| 300 | |
| 301 #define DNSSEC_KEY_FLAG_NOAUTH 0x0001 | |
| 302 #define DNSSEC_KEY_FLAG_NOCONF 0x0002 | |
| 303 #define DNSSEC_KEY_FLAG_FLAG2 0x0004 | |
| 304 #define DNSSEC_KEY_FLAG_EXTEND 0x0008 | |
| 305 #define DNSSEC_KEY_FLAG_ | |
| 306 #define DNSSEC_KEY_FLAG_FLAG4 0x0010 | |
| 307 #define DNSSEC_KEY_FLAG_FLAG5 0x0020 | |
| 308 | |
| 309 #define DNSSEC_KEY_FLAG_USER 0x0000 | |
| 310 #define DNSSEC_KEY_FLAG_ZONE 0x0040 | |
| 311 #define DNSSEC_KEY_FLAG_HOST 0x0080 | |
| 312 #define DNSSEC_KEY_FLAG_NTPE3 0x00c0 | |
| 313 | |
| 314 #define DNSSEC_KEY_FLAG_FLAG8 0x0100 | |
| 315 #define DNSSEC_KEY_FLAG_FLAG9 0x0200 | |
| 316 #define DNSSEC_KEY_FLAG_FLAG10 0x0400 | |
| 317 #define DNSSEC_KEY_FLAG_FLAG11 0x0800 | |
| 318 | |
| 319 #define DNSSEC_KEY_FLAG_SIG0 0x0000 | |
| 320 #define DNSSEC_KEY_FLAG_SIG1 0x1000 | |
| 321 #define DNSSEC_KEY_FLAG_SIG2 0x2000 | |
| 322 #define DNSSEC_KEY_FLAG_SIG3 0x3000 | |
| 323 #define DNSSEC_KEY_FLAG_SIG4 0x4000 | |
| 324 #define DNSSEC_KEY_FLAG_SIG5 0x5000 | |
| 325 #define DNSSEC_KEY_FLAG_SIG6 0x6000 | |
| 326 #define DNSSEC_KEY_FLAG_SIG7 0x7000 | |
| 327 #define DNSSEC_KEY_FLAG_SIG8 0x8000 | |
| 328 #define DNSSEC_KEY_FLAG_SIG9 0x9000 | |
| 329 #define DNSSEC_KEY_FLAG_SIG10 0xa000 | |
| 330 #define DNSSEC_KEY_FLAG_SIG11 0xb000 | |
| 331 #define DNSSEC_KEY_FLAG_SIG12 0xc000 | |
| 332 #define DNSSEC_KEY_FLAG_SIG13 0xd000 | |
| 333 #define DNSSEC_KEY_FLAG_SIG14 0xe000 | |
| 334 #define DNSSEC_KEY_FLAG_SIG15 0xf000 | |
| 335 | |
| 336 #define DNS_TKEY_MODE_SERVER_ASSIGN 1 | |
| 337 #define DNS_TKEY_MODE_DIFFIE_HELLMAN 2 | |
| 338 #define DNS_TKEY_MODE_GSS 3 | |
| 339 #define DNS_TKEY_MODE_RESOLVER_ASSIGN 4 | |
| 340 | |
| 341 #define DNS_WINS_FLAG_SCOPE (0x80000000) | |
| 342 #define DNS_WINS_FLAG_LOCAL (0x00010000) | |
| 343 | |
| 344 #define IS_WORD_ALIGNED(p) (!((UINT_PTR)(p) & (UINT_PTR)1)) | |
| 345 #define IS_DWORD_ALIGNED(p) (!((UINT_PTR)(p) & (UINT_PTR)3)) | |
| 346 #define IS_QWORD_ALIGNED(p) (!((UINT_PTR)(p) & (UINT_PTR)7)) | |
| 347 | |
| 348 typedef enum { | |
| 349 DnsConfigPrimaryDomainName_W,DnsConfigPrimaryDomainName_A,DnsConfigPrimaryDomainName_UTF8,DnsConfigAdapterDomainName_W, | |
| 350 DnsConfigAdapterDomainName_A,DnsConfigAdapterDomainName_UTF8,DnsConfigDnsServerList,DnsConfigSearchList, | |
| 351 DnsConfigAdapterInfo,DnsConfigPrimaryHostNameRegistrationEnabled,DnsConfigAdapterHostNameRegistrationEnabled,DnsConfigAddressRegistrationMaxCount, | |
| 352 DnsConfigHostName_W,DnsConfigHostName_A,DnsConfigHostName_UTF8,DnsConfigFullHostName_W,DnsConfigFullHostName_A,DnsConfigFullHostName_UTF8 | |
| 353 } DNS_CONFIG_TYPE; | |
| 354 | |
| 355 #define DNS_CONFIG_FLAG_ALLOC (0x00000001) | |
| 356 | |
| 357 DNS_STATUS WINAPI DnsQueryConfig(DNS_CONFIG_TYPE Config,DWORD Flag,PWSTR pwsAdapterName,PVOID pReserved,PVOID pBuffer,PDWORD pBufferLength); | |
| 358 | |
| 359 typedef struct { | |
| 360 IP4_ADDRESS IpAddress; | |
| 361 } DNS_A_DATA,*PDNS_A_DATA; | |
| 362 | |
| 363 typedef struct { | |
| 364 PWSTR pNameHost; | |
| 365 } DNS_PTR_DATAW,*PDNS_PTR_DATAW; | |
| 366 | |
| 367 typedef struct { | |
| 368 PSTR pNameHost; | |
| 369 } DNS_PTR_DATAA,*PDNS_PTR_DATAA; | |
| 370 | |
| 371 typedef struct { | |
| 372 PWSTR pNamePrimaryServer; | |
| 373 PWSTR pNameAdministrator; | |
| 374 DWORD dwSerialNo; | |
| 375 DWORD dwRefresh; | |
| 376 DWORD dwRetry; | |
| 377 DWORD dwExpire; | |
| 378 DWORD dwDefaultTtl; | |
| 379 } DNS_SOA_DATAW,*PDNS_SOA_DATAW; | |
| 380 | |
| 381 typedef struct { | |
| 382 PSTR pNamePrimaryServer; | |
| 383 PSTR pNameAdministrator; | |
| 384 DWORD dwSerialNo; | |
| 385 DWORD dwRefresh; | |
| 386 DWORD dwRetry; | |
| 387 DWORD dwExpire; | |
| 388 DWORD dwDefaultTtl; | |
| 389 } DNS_SOA_DATAA,*PDNS_SOA_DATAA; | |
| 390 | |
| 391 typedef struct { | |
| 392 PWSTR pNameMailbox; | |
| 393 PWSTR pNameErrorsMailbox; | |
| 394 } DNS_MINFO_DATAW,*PDNS_MINFO_DATAW; | |
| 395 | |
| 396 typedef struct { | |
| 397 PSTR pNameMailbox; | |
| 398 PSTR pNameErrorsMailbox; | |
| 399 } DNS_MINFO_DATAA,*PDNS_MINFO_DATAA; | |
| 400 | |
| 401 typedef struct { | |
| 402 PWSTR pNameExchange; | |
| 403 WORD wPreference; | |
| 404 WORD Pad; | |
| 405 } DNS_MX_DATAW,*PDNS_MX_DATAW; | |
| 406 | |
| 407 typedef struct { | |
| 408 PSTR pNameExchange; | |
| 409 WORD wPreference; | |
| 410 WORD Pad; | |
| 411 } DNS_MX_DATAA,*PDNS_MX_DATAA; | |
| 412 | |
| 413 typedef struct { | |
| 414 DWORD dwStringCount; | |
| 415 PWSTR pStringArray[1]; | |
| 416 } DNS_TXT_DATAW,*PDNS_TXT_DATAW; | |
| 417 | |
| 418 typedef struct { | |
| 419 DWORD dwStringCount; | |
| 420 PSTR pStringArray[1]; | |
| 421 } DNS_TXT_DATAA,*PDNS_TXT_DATAA; | |
| 422 | |
| 423 typedef struct { | |
| 424 DWORD dwByteCount; | |
| 425 BYTE Data[1]; | |
| 426 } DNS_NULL_DATA,*PDNS_NULL_DATA; | |
| 427 | |
| 428 typedef struct { | |
| 429 IP4_ADDRESS IpAddress; | |
| 430 UCHAR chProtocol; | |
| 431 BYTE BitMask[1]; | |
| 432 } DNS_WKS_DATA,*PDNS_WKS_DATA; | |
| 433 | |
| 434 typedef struct { | |
| 435 IP6_ADDRESS Ip6Address; | |
| 436 } DNS_AAAA_DATA,*PDNS_AAAA_DATA; | |
| 437 | |
| 438 typedef struct { | |
| 439 PWSTR pNameSigner; | |
| 440 WORD wTypeCovered; | |
| 441 BYTE chAlgorithm; | |
| 442 BYTE chLabelCount; | |
| 443 DWORD dwOriginalTtl; | |
| 444 DWORD dwExpiration; | |
| 445 DWORD dwTimeSigned; | |
| 446 WORD wKeyTag; | |
| 447 WORD Pad; | |
| 448 BYTE Signature[1]; | |
| 449 } DNS_SIG_DATAW,*PDNS_SIG_DATAW; | |
| 450 | |
| 451 typedef struct { | |
| 452 PSTR pNameSigner; | |
| 453 WORD wTypeCovered; | |
| 454 BYTE chAlgorithm; | |
| 455 BYTE chLabelCount; | |
| 456 DWORD dwOriginalTtl; | |
| 457 DWORD dwExpiration; | |
| 458 DWORD dwTimeSigned; | |
| 459 WORD wKeyTag; | |
| 460 WORD Pad; | |
| 461 BYTE Signature[1]; | |
| 462 } DNS_SIG_DATAA,*PDNS_SIG_DATAA; | |
| 463 | |
| 464 typedef struct { | |
| 465 WORD wFlags; | |
| 466 BYTE chProtocol; | |
| 467 BYTE chAlgorithm; | |
| 468 BYTE Key[1]; | |
| 469 } DNS_KEY_DATA,*PDNS_KEY_DATA; | |
| 470 | |
| 471 typedef struct { | |
| 472 WORD wVersion; | |
| 473 WORD wSize; | |
| 474 WORD wHorPrec; | |
| 475 WORD wVerPrec; | |
| 476 DWORD dwLatitude; | |
| 477 DWORD dwLongitude; | |
| 478 DWORD dwAltitude; | |
| 479 } DNS_LOC_DATA,*PDNS_LOC_DATA; | |
| 480 | |
| 481 typedef struct { | |
| 482 PWSTR pNameNext; | |
| 483 WORD wNumTypes; | |
| 484 WORD wTypes[1]; | |
| 485 } DNS_NXT_DATAW,*PDNS_NXT_DATAW; | |
| 486 | |
| 487 typedef struct { | |
| 488 PSTR pNameNext; | |
| 489 WORD wNumTypes; | |
| 490 WORD wTypes[1]; | |
| 491 } DNS_NXT_DATAA,*PDNS_NXT_DATAA; | |
| 492 | |
| 493 typedef struct { | |
| 494 PWSTR pNameTarget; | |
| 495 WORD wPriority; | |
| 496 WORD wWeight; | |
| 497 WORD wPort; | |
| 498 WORD Pad; | |
| 499 } DNS_SRV_DATAW,*PDNS_SRV_DATAW; | |
| 500 | |
| 501 typedef struct { | |
| 502 PSTR pNameTarget; | |
| 503 WORD wPriority; | |
| 504 WORD wWeight; | |
| 505 WORD wPort; | |
| 506 WORD Pad; | |
| 507 } DNS_SRV_DATAA,*PDNS_SRV_DATAA; | |
| 508 | |
| 509 typedef struct { | |
| 510 BYTE AddressType; | |
| 511 BYTE Address[DNS_ATMA_MAX_ADDR_LENGTH ]; | |
| 512 } DNS_ATMA_DATA,*PDNS_ATMA_DATA; | |
| 513 | |
| 514 typedef struct { | |
| 515 PWSTR pNameAlgorithm; | |
| 516 PBYTE pAlgorithmPacket; | |
| 517 PBYTE pKey; | |
| 518 PBYTE pOtherData; | |
| 519 DWORD dwCreateTime; | |
| 520 DWORD dwExpireTime; | |
| 521 WORD wMode; | |
| 522 WORD wError; | |
| 523 WORD wKeyLength; | |
| 524 WORD wOtherLength; | |
| 525 UCHAR cAlgNameLength; | |
| 526 WINBOOL bPacketPointers; | |
| 527 } DNS_TKEY_DATAW,*PDNS_TKEY_DATAW; | |
| 528 | |
| 529 typedef struct { | |
| 530 PSTR pNameAlgorithm; | |
| 531 PBYTE pAlgorithmPacket; | |
| 532 PBYTE pKey; | |
| 533 PBYTE pOtherData; | |
| 534 DWORD dwCreateTime; | |
| 535 DWORD dwExpireTime; | |
| 536 WORD wMode; | |
| 537 WORD wError; | |
| 538 WORD wKeyLength; | |
| 539 WORD wOtherLength; | |
| 540 UCHAR cAlgNameLength; | |
| 541 WINBOOL bPacketPointers; | |
| 542 } DNS_TKEY_DATAA,*PDNS_TKEY_DATAA; | |
| 543 | |
| 544 typedef struct { | |
| 545 PWSTR pNameAlgorithm; | |
| 546 PBYTE pAlgorithmPacket; | |
| 547 PBYTE pSignature; | |
| 548 PBYTE pOtherData; | |
| 549 LONGLONG i64CreateTime; | |
| 550 WORD wFudgeTime; | |
| 551 WORD wOriginalXid; | |
| 552 WORD wError; | |
| 553 WORD wSigLength; | |
| 554 WORD wOtherLength; | |
| 555 UCHAR cAlgNameLength; | |
| 556 WINBOOL bPacketPointers; | |
| 557 } DNS_TSIG_DATAW,*PDNS_TSIG_DATAW; | |
| 558 | |
| 559 typedef struct { | |
| 560 PSTR pNameAlgorithm; | |
| 561 PBYTE pAlgorithmPacket; | |
| 562 PBYTE pSignature; | |
| 563 PBYTE pOtherData; | |
| 564 LONGLONG i64CreateTime; | |
| 565 WORD wFudgeTime; | |
| 566 WORD wOriginalXid; | |
| 567 WORD wError; | |
| 568 WORD wSigLength; | |
| 569 WORD wOtherLength; | |
| 570 UCHAR cAlgNameLength; | |
| 571 WINBOOL bPacketPointers; | |
| 572 } DNS_TSIG_DATAA,*PDNS_TSIG_DATAA; | |
| 573 | |
| 574 typedef struct { | |
| 575 DWORD dwMappingFlag; | |
| 576 DWORD dwLookupTimeout; | |
| 577 DWORD dwCacheTimeout; | |
| 578 DWORD cWinsServerCount; | |
| 579 IP4_ADDRESS WinsServers[1]; | |
| 580 } DNS_WINS_DATA,*PDNS_WINS_DATA; | |
| 581 | |
| 582 typedef struct { | |
| 583 DWORD dwMappingFlag; | |
| 584 DWORD dwLookupTimeout; | |
| 585 DWORD dwCacheTimeout; | |
| 586 PWSTR pNameResultDomain; | |
| 587 } DNS_WINSR_DATAW,*PDNS_WINSR_DATAW; | |
| 588 | |
| 589 typedef struct { | |
| 590 DWORD dwMappingFlag; | |
| 591 DWORD dwLookupTimeout; | |
| 592 DWORD dwCacheTimeout; | |
| 593 PSTR pNameResultDomain; | |
| 594 } DNS_WINSR_DATAA,*PDNS_WINSR_DATAA; | |
| 595 | |
| 596 #ifdef UNICODE | |
| 597 typedef DNS_PTR_DATAW DNS_PTR_DATA,*PDNS_PTR_DATA; | |
| 598 typedef DNS_SOA_DATAW DNS_SOA_DATA,*PDNS_SOA_DATA; | |
| 599 typedef DNS_MINFO_DATAW DNS_MINFO_DATA,*PDNS_MINFO_DATA; | |
| 600 typedef DNS_MX_DATAW DNS_MX_DATA,*PDNS_MX_DATA; | |
| 601 typedef DNS_TXT_DATAW DNS_TXT_DATA,*PDNS_TXT_DATA; | |
| 602 typedef DNS_SIG_DATAW DNS_SIG_DATA,*PDNS_SIG_DATA; | |
| 603 typedef DNS_NXT_DATAW DNS_NXT_DATA,*PDNS_NXT_DATA; | |
| 604 typedef DNS_SRV_DATAW DNS_SRV_DATA,*PDNS_SRV_DATA; | |
| 605 typedef DNS_TKEY_DATAW DNS_TKEY_DATA,*PDNS_TKEY_DATA; | |
| 606 typedef DNS_TSIG_DATAW DNS_TSIG_DATA,*PDNS_TSIG_DATA; | |
| 607 typedef DNS_WINSR_DATAW DNS_WINSR_DATA,*PDNS_WINSR_DATA; | |
| 608 #else | |
| 609 typedef DNS_PTR_DATAA DNS_PTR_DATA,*PDNS_PTR_DATA; | |
| 610 typedef DNS_SOA_DATAA DNS_SOA_DATA,*PDNS_SOA_DATA; | |
| 611 typedef DNS_MINFO_DATAA DNS_MINFO_DATA,*PDNS_MINFO_DATA; | |
| 612 typedef DNS_MX_DATAA DNS_MX_DATA,*PDNS_MX_DATA; | |
| 613 typedef DNS_TXT_DATAA DNS_TXT_DATA,*PDNS_TXT_DATA; | |
| 614 typedef DNS_SIG_DATAA DNS_SIG_DATA,*PDNS_SIG_DATA; | |
| 615 typedef DNS_NXT_DATAA DNS_NXT_DATA,*PDNS_NXT_DATA; | |
| 616 typedef DNS_SRV_DATAA DNS_SRV_DATA,*PDNS_SRV_DATA; | |
| 617 typedef DNS_TKEY_DATAA DNS_TKEY_DATA,*PDNS_TKEY_DATA; | |
| 618 typedef DNS_TSIG_DATAA DNS_TSIG_DATA,*PDNS_TSIG_DATA; | |
| 619 typedef DNS_WINSR_DATAA DNS_WINSR_DATA,*PDNS_WINSR_DATA; | |
| 620 #endif | |
| 621 | |
| 622 #define DNS_TEXT_RECORD_LENGTH(StringCount) (FIELD_OFFSET(DNS_TXT_DATA,pStringArray) + ((StringCount) *sizeof(PCHAR))) | |
| 623 #define DNS_NULL_RECORD_LENGTH(ByteCount) (FIELD_OFFSET(DNS_NULL_DATA,Data) + (ByteCount)) | |
| 624 #define DNS_WKS_RECORD_LENGTH(ByteCount) (FIELD_OFFSET(DNS_WKS_DATA,BitMask) + (ByteCount)) | |
| 625 #define DNS_WINS_RECORD_LENGTH(IpCount) (FIELD_OFFSET(DNS_WINS_DATA,WinsServers) + ((IpCount) *sizeof(IP4_ADDRESS))) | |
| 626 | |
| 627 typedef struct _DnsRecordFlags { | |
| 628 DWORD Section : 2; | |
| 629 DWORD Delete : 1; | |
| 630 DWORD CharSet : 2; | |
| 631 DWORD Unused : 3; | |
| 632 DWORD Reserved : 24; | |
| 633 } DNS_RECORD_FLAGS; | |
| 634 | |
| 635 typedef enum _DnsSection { | |
| 636 DnsSectionQuestion,DnsSectionAnswer,DnsSectionAuthority,DnsSectionAddtional | |
| 637 } DNS_SECTION; | |
| 638 | |
| 639 #define DnsSectionZone DnsSectionQuestion | |
| 640 #define DnsSectionPrereq DnsSectionAnswer | |
| 641 #define DnsSectionUpdate DnsSectionAuthority | |
| 642 | |
| 643 #define DNSREC_SECTION (0x00000003) | |
| 644 #define DNSREC_QUESTION (0x00000000) | |
| 645 #define DNSREC_ANSWER (0x00000001) | |
| 646 #define DNSREC_AUTHORITY (0x00000002) | |
| 647 #define DNSREC_ADDITIONAL (0x00000003) | |
| 648 | |
| 649 #define DNSREC_ZONE (0x00000000) | |
| 650 #define DNSREC_PREREQ (0x00000001) | |
| 651 #define DNSREC_UPDATE (0x00000002) | |
| 652 | |
| 653 #define DNSREC_DELETE (0x00000004) | |
| 654 #define DNSREC_NOEXIST (0x00000004) | |
| 655 | |
| 656 typedef struct _DnsRecordW { | |
| 657 struct _DnsRecordW *pNext; | |
| 658 PWSTR pName; | |
| 659 WORD wType; | |
| 660 WORD wDataLength; | |
| 661 union { | |
| 662 DWORD DW; | |
| 663 DNS_RECORD_FLAGS S; | |
| 664 } Flags; | |
| 665 DWORD dwTtl; | |
| 666 DWORD dwReserved; | |
| 667 union { | |
| 668 DNS_A_DATA A; | |
| 669 DNS_SOA_DATAW SOA,Soa; | |
| 670 DNS_PTR_DATAW PTR,Ptr,NS,Ns,CNAME,Cname,MB,Mb,MD,Md,MF,Mf,MG,Mg,MR,Mr; | |
| 671 DNS_MINFO_DATAW MINFO,Minfo,RP,Rp; | |
| 672 DNS_MX_DATAW MX,Mx,AFSDB,Afsdb,RT,Rt; | |
| 673 DNS_TXT_DATAW HINFO,Hinfo,ISDN,Isdn,TXT,Txt,X25; | |
| 674 DNS_NULL_DATA Null; | |
| 675 DNS_WKS_DATA WKS,Wks; | |
| 676 DNS_AAAA_DATA AAAA; | |
| 677 DNS_KEY_DATA KEY,Key; | |
| 678 DNS_SIG_DATAW SIG,Sig; | |
| 679 DNS_ATMA_DATA ATMA,Atma; | |
| 680 DNS_NXT_DATAW NXT,Nxt; | |
| 681 DNS_SRV_DATAW SRV,Srv; | |
| 682 DNS_TKEY_DATAW TKEY,Tkey; | |
| 683 DNS_TSIG_DATAW TSIG,Tsig; | |
| 684 DNS_WINS_DATA WINS,Wins; | |
| 685 DNS_WINSR_DATAW WINSR,WinsR,NBSTAT,Nbstat; | |
| 686 } Data; | |
| 687 } DNS_RECORDW,*PDNS_RECORDW; | |
| 688 | |
| 689 typedef struct _DnsRecordA { | |
| 690 struct _DnsRecordA *pNext; | |
| 691 PSTR pName; | |
| 692 WORD wType; | |
| 693 WORD wDataLength; | |
| 694 union { | |
| 695 DWORD DW; | |
| 696 DNS_RECORD_FLAGS S; | |
| 697 } Flags; | |
| 698 DWORD dwTtl; | |
| 699 DWORD dwReserved; | |
| 700 union { | |
| 701 DNS_A_DATA A; | |
| 702 DNS_SOA_DATAA SOA,Soa; | |
| 703 DNS_PTR_DATAA PTR,Ptr,NS,Ns,CNAME,Cname,MB,Mb,MD,Md,MF,Mf,MG,Mg,MR,Mr; | |
| 704 DNS_MINFO_DATAA MINFO,Minfo,RP,Rp; | |
| 705 DNS_MX_DATAA MX,Mx,AFSDB,Afsdb,RT,Rt; | |
| 706 DNS_TXT_DATAA HINFO,Hinfo,ISDN,Isdn,TXT,Txt,X25; | |
| 707 DNS_NULL_DATA Null; | |
| 708 DNS_WKS_DATA WKS,Wks; | |
| 709 DNS_AAAA_DATA AAAA; | |
| 710 DNS_KEY_DATA KEY,Key; | |
| 711 DNS_SIG_DATAA SIG,Sig; | |
| 712 DNS_ATMA_DATA ATMA,Atma; | |
| 713 DNS_NXT_DATAA NXT,Nxt; | |
| 714 DNS_SRV_DATAA SRV,Srv; | |
| 715 DNS_TKEY_DATAA TKEY,Tkey; | |
| 716 DNS_TSIG_DATAA TSIG,Tsig; | |
| 717 DNS_WINS_DATA WINS,Wins; | |
| 718 DNS_WINSR_DATAA WINSR,WinsR,NBSTAT,Nbstat; | |
| 719 } Data; | |
| 720 } DNS_RECORDA,*PDNS_RECORDA; | |
| 721 | |
| 722 #ifdef UNICODE | |
| 723 typedef DNS_RECORDW DNS_RECORD,*PDNS_RECORD; | |
| 724 #else | |
| 725 typedef DNS_RECORDA DNS_RECORD,*PDNS_RECORD; | |
| 726 #endif | |
| 727 | |
| 728 #define DNS_RECORD_FIXED_SIZE FIELD_OFFSET(DNS_RECORD,Data) | |
| 729 #define SIZEOF_DNS_RECORD_HEADER DNS_RECORD_FIXED_SIZE | |
| 730 | |
| 731 typedef struct _DnsRRSet { | |
| 732 PDNS_RECORD pFirstRR; | |
| 733 PDNS_RECORD pLastRR; | |
| 734 } DNS_RRSET,*PDNS_RRSET; | |
| 735 | |
| 736 #define DNS_RRSET_INIT(rrset) { PDNS_RRSET _prrset = &(rrset); _prrset->pFirstRR = NULL; _prrset->pLastRR = (PDNS_RECORD) &_prrset->pFirstRR; } | |
| 737 #define DNS_RRSET_ADD(rrset,pnewRR) { PDNS_RRSET _prrset = &(rrset); PDNS_RECORD _prrnew = (pnewRR); _prrset->pLastRR->pNext = _prrnew; _prrset->pLastRR = _prrnew; } | |
| 738 #define DNS_RRSET_TERMINATE(rrset) { PDNS_RRSET _prrset = &(rrset); _prrset->pLastRR->pNext = NULL; } | |
| 739 | |
| 740 typedef enum _DNS_CHARSET { | |
| 741 DnsCharSetUnknown,DnsCharSetUnicode,DnsCharSetUtf8,DnsCharSetAnsi | |
| 742 } DNS_CHARSET; | |
| 743 | |
| 744 PDNS_RECORD WINAPI DnsRecordCopyEx(PDNS_RECORD pRecord,DNS_CHARSET CharSetIn,DNS_CHARSET CharSetOut); | |
| 745 PDNS_RECORD WINAPI DnsRecordSetCopyEx(PDNS_RECORD pRecordSet,DNS_CHARSET CharSetIn,DNS_CHARSET CharSetOut); | |
| 746 | |
| 747 #ifdef UNICODE | |
| 748 #define DnsRecordCopy(pRR) DnsRecordCopyEx((pRR),DnsCharSetUnicode,DnsCharSetUnicode) | |
| 749 #define DnsRecordSetCopy(pRR) DnsRecordSetCopyEx((pRR),DnsCharSetUnicode,DnsCharSetUnicode) | |
| 750 #else | |
| 751 #define DnsRecordCopy(pRR) DnsRecordCopyEx((pRR),DnsCharSetAnsi,DnsCharSetAnsi) | |
| 752 #define DnsRecordSetCopy(pRR) DnsRecordSetCopyEx((pRR),DnsCharSetAnsi,DnsCharSetAnsi) | |
| 753 #endif | |
| 754 | |
| 755 WINBOOL WINAPI DnsRecordCompare(PDNS_RECORD pRecord1,PDNS_RECORD pRecord2); | |
| 756 WINBOOL WINAPI DnsRecordSetCompare(PDNS_RECORD pRR1,PDNS_RECORD pRR2,PDNS_RECORD *ppDiff1,PDNS_RECORD *ppDiff2); | |
| 757 PDNS_RECORD DnsRecordSetDetach(PDNS_RECORD pRecordList); | |
| 758 | |
| 759 typedef enum { | |
| 760 DnsFreeFlat = 0,DnsFreeRecordList,DnsFreeParsedMessageFields | |
| 761 } DNS_FREE_TYPE; | |
| 762 | |
| 763 VOID WINAPI DnsFree(PVOID pData,DNS_FREE_TYPE FreeType); | |
| 764 | |
| 765 #define DnsFreeRecordListDeep DnsFreeRecordList | |
| 766 | |
| 767 VOID WINAPI DnsRecordListFree(PDNS_RECORD pRecordList,DNS_FREE_TYPE FreeType); | |
| 768 | |
| 769 #define DNS_QUERY_STANDARD 0x00000000 | |
| 770 #define DNS_QUERY_ACCEPT_TRUNCATED_RESPONSE 0x00000001 | |
| 771 #define DNS_QUERY_USE_TCP_ONLY 0x00000002 | |
| 772 #define DNS_QUERY_NO_RECURSION 0x00000004 | |
| 773 #define DNS_QUERY_BYPASS_CACHE 0x00000008 | |
| 774 #define DNS_QUERY_NO_WIRE_QUERY 0x00000010 | |
| 775 #define DNS_QUERY_NO_LOCAL_NAME 0x00000020 | |
| 776 #define DNS_QUERY_NO_HOSTS_FILE 0x00000040 | |
| 777 #define DNS_QUERY_NO_NETBT 0x00000080 | |
| 778 #define DNS_QUERY_WIRE_ONLY 0x00000100 | |
| 779 #define DNS_QUERY_RETURN_MESSAGE 0x00000200 | |
| 780 #define DNS_QUERY_TREAT_AS_FQDN 0x00001000 | |
| 781 #define DNS_QUERY_DONT_RESET_TTL_VALUES 0x00100000 | |
| 782 #define DNS_QUERY_RESERVED 0xff000000 | |
| 783 #define DNS_QUERY_CACHE_ONLY DNS_QUERY_NO_WIRE_QUERY | |
| 784 | |
| 785 DNS_STATUS WINAPI DnsQuery_A(PCSTR pszName,WORD wType,DWORD Options,PIP4_ARRAY aipServers,PDNS_RECORD *ppQueryResults,PVOID *pReserved); | |
| 786 DNS_STATUS WINAPI DnsQuery_UTF8(PCSTR pszName,WORD wType,DWORD Options,PIP4_ARRAY aipServers,PDNS_RECORD *ppQueryResults,PVOID *pReserved); | |
| 787 DNS_STATUS WINAPI DnsQuery_W(PCWSTR pszName,WORD wType,DWORD Options,PIP4_ARRAY aipServers,PDNS_RECORD *ppQueryResults,PVOID *pReserved); | |
| 788 | |
| 789 #ifdef UNICODE | |
| 790 #define DnsQuery DnsQuery_W | |
| 791 #else | |
| 792 #define DnsQuery DnsQuery_A | |
| 793 #endif | |
| 794 | |
| 795 #define DNS_UPDATE_SECURITY_USE_DEFAULT 0x00000000 | |
| 796 #define DNS_UPDATE_SECURITY_OFF 0x00000010 | |
| 797 #define DNS_UPDATE_SECURITY_ON 0x00000020 | |
| 798 #define DNS_UPDATE_SECURITY_ONLY 0x00000100 | |
| 799 #define DNS_UPDATE_CACHE_SECURITY_CONTEXT 0x00000200 | |
| 800 #define DNS_UPDATE_TEST_USE_LOCAL_SYS_ACCT 0x00000400 | |
| 801 #define DNS_UPDATE_FORCE_SECURITY_NEGO 0x00000800 | |
| 802 #define DNS_UPDATE_TRY_ALL_MASTER_SERVERS 0x00001000 | |
| 803 #define DNS_UPDATE_SKIP_NO_UPDATE_ADAPTERS 0x00002000 | |
| 804 #define DNS_UPDATE_REMOTE_SERVER 0x00004000 | |
| 805 #define DNS_UPDATE_RESERVED 0xffff0000 | |
| 806 | |
| 807 #ifdef UNICODE | |
| 808 #define DnsAcquireContextHandle DnsAcquireContextHandle_W | |
| 809 #define DnsModifyRecordsInSet DnsModifyRecordsInSet_W | |
| 810 #define DnsReplaceRecordSet DnsReplaceRecordSetW | |
| 811 #define DnsValidateName(p,f) DnsValidateName_W((p),(f)) | |
| 812 #define DnsNameCompare(n1,n2) DnsNameCompare_W((n1),(n2)) | |
| 813 #else | |
| 814 #define DnsAcquireContextHandle DnsAcquireContextHandle_A | |
| 815 #define DnsModifyRecordsInSet DnsModifyRecordsInSet_A | |
| 816 #define DnsReplaceRecordSet DnsReplaceRecordSetA | |
| 817 #define DnsValidateName(p,f) DnsValidateName_A((p),(f)) | |
| 818 #define DnsNameCompare(n1,n2) DnsNameCompare_A((n1),(n2)) | |
| 819 #endif | |
| 820 | |
| 821 DNS_STATUS WINAPI DnsAcquireContextHandle_W(DWORD CredentialFlags,PVOID pCredentials,PHANDLE pContextHandle); | |
| 822 DNS_STATUS WINAPI DnsAcquireContextHandle_A(DWORD CredentialFlags,PVOID pCredentials,PHANDLE pContextHandle); | |
| 823 VOID WINAPI DnsReleaseContextHandle(HANDLE hContext); | |
| 824 DNS_STATUS WINAPI DnsModifyRecordsInSet_W(PDNS_RECORD pAddRecords,PDNS_RECORD pDeleteRecords,DWORD Options,HANDLE hContext,PIP4_ARRAY pServerList,PVOID pReserved); | |
| 825 DNS_STATUS WINAPI DnsModifyRecordsInSet_A(PDNS_RECORD pAddRecords,PDNS_RECORD pDeleteRecords,DWORD Options,HANDLE hContext,PIP4_ARRAY pServerList,PVOID pReserved); | |
| 826 DNS_STATUS WINAPI DnsModifyRecordsInSet_UTF8(PDNS_RECORD pAddRecords,PDNS_RECORD pDeleteRecords,DWORD Options,HANDLE hContext,PIP4_ARRAY pServerList,PVOID pReserved); | |
| 827 DNS_STATUS WINAPI DnsReplaceRecordSetW(PDNS_RECORD pNewSet,DWORD Options,HANDLE hContext,PIP4_ARRAY pServerList,PVOID pReserved); | |
| 828 DNS_STATUS WINAPI DnsReplaceRecordSetA(PDNS_RECORD pNewSet,DWORD Options,HANDLE hContext,PIP4_ARRAY pServerList,PVOID pReserved); | |
| 829 DNS_STATUS WINAPI DnsReplaceRecordSetUTF8(PDNS_RECORD pNewSet,DWORD Options,HANDLE hContext,PIP4_ARRAY pServerList,PVOID pReserved); | |
| 830 | |
| 831 typedef enum _DNS_NAME_FORMAT { | |
| 832 DnsNameDomain,DnsNameDomainLabel,DnsNameHostnameFull,DnsNameHostnameLabel,DnsNameWildcard,DnsNameSrvRecord | |
| 833 } DNS_NAME_FORMAT; | |
| 834 | |
| 835 DNS_STATUS DnsValidateName_UTF8(LPCSTR pszName,DNS_NAME_FORMAT Format); | |
| 836 DNS_STATUS DnsValidateName_W(LPCWSTR pwszName,DNS_NAME_FORMAT Format); | |
| 837 DNS_STATUS DnsValidateName_A(LPCSTR pszName,DNS_NAME_FORMAT Format); | |
| 838 WINBOOL WINAPI DnsNameCompare_A(LPSTR pName1,LPSTR pName2); | |
| 839 WINBOOL WINAPI DnsNameCompare_W(LPWSTR pName1,LPWSTR pName2); | |
| 840 | |
| 841 typedef struct _DNS_MESSAGE_BUFFER { | |
| 842 DNS_HEADER MessageHead; | |
| 843 CHAR MessageBody[1]; | |
| 844 } DNS_MESSAGE_BUFFER,*PDNS_MESSAGE_BUFFER; | |
| 845 | |
| 846 WINBOOL WINAPI DnsWriteQuestionToBuffer_W(PDNS_MESSAGE_BUFFER pDnsBuffer,PDWORD pdwBufferSize,LPWSTR pszName,WORD wType,WORD Xid,WINBOOL fRecursionDesired); | |
| 847 WINBOOL WINAPI DnsWriteQuestionToBuffer_UTF8(PDNS_MESSAGE_BUFFER pDnsBuffer,LPDWORD pdwBufferSize,LPSTR pszName,WORD wType,WORD Xid,WINBOOL fRecursionDesired); | |
| 848 DNS_STATUS WINAPI DnsExtractRecordsFromMessage_W(PDNS_MESSAGE_BUFFER pDnsBuffer,WORD wMessageLength,PDNS_RECORD *ppRecord); | |
| 849 DNS_STATUS WINAPI DnsExtractRecordsFromMessage_UTF8(PDNS_MESSAGE_BUFFER pDnsBuffer,WORD wMessageLength,PDNS_RECORD *ppRecord); | |
| 850 | |
| 851 #ifdef __cplusplus | |
| 852 } | |
| 853 #endif | |
| 854 #endif |
