Reactos
at master 950 lines 22 kB view raw
1#ifndef _WINDNS_INCLUDED_ 2#define _WINDNS_INCLUDED_ 3 4#ifdef __cplusplus 5extern "C" { 6#endif 7 8#define DNS_QUERY_STANDARD 0x0 9#define DNS_QUERY_ACCEPT_TRUNCATED_RESPONSE 0x1 10#define DNS_QUERY_USE_TCP_ONLY 0x2 11#define DNS_QUERY_NO_RECURSION 0x4 12#define DNS_QUERY_BYPASS_CACHE 0x8 13#define DNS_QUERY_NO_WIRE_QUERY 0x10 14#define DNS_QUERY_NO_LOCAL_NAME 0x20 15#define DNS_QUERY_NO_HOSTS_FILE 0x40 16#define DNS_QUERY_NO_NETBT 0x80 17#define DNS_QUERY_TREAT_AS_FQDN 0x1000 18#define DNS_QUERY_WIRE_ONLY 0x100 19#define DNS_QUERY_RETURN_MESSAGE 0x200 20#define DNS_QUERY_DONT_RESET_TTL_VALUES 0x100000 21#define DNS_QUERY_RESERVED 0xff000000 22 23#define DNS_UPDATE_SECURITY_USE_DEFAULT 0x0 24#define DNS_UPDATE_SECURITY_OFF 0x10 25#define DNS_UPDATE_SECURITY_ON 0x20 26#define DNS_UPDATE_SECURITY_ONLY 0x100 27#define DNS_UPDATE_CACHE_SECURITY_CONTEXT 0x200 28#define DNS_UPDATE_TEST_USE_LOCAL_SYS_ACCT 0x400 29#define DNS_UPDATE_FORCE_SECURITY_NEGO 0x800 30#define DNS_UPDATE_RESERVED 0xffff0000 31 32#define DNS_CONFIG_FLAG_ALLOC TRUE 33 34#ifndef RC_INVOKE 35 36typedef DWORD IP4_ADDRESS; 37 38typedef _Return_type_success_(return == 0) DWORD DNS_STATUS; 39 40#define DNS_TYPE_ZERO 0x0000 41#define DNS_TYPE_A 0x0001 42#define DNS_TYPE_NS 0x0002 43#define DNS_TYPE_MD 0x0003 44#define DNS_TYPE_MF 0x0004 45#define DNS_TYPE_CNAME 0x0005 46#define DNS_TYPE_SOA 0x0006 47#define DNS_TYPE_MB 0x0007 48#define DNS_TYPE_MG 0x0008 49#define DNS_TYPE_MR 0x0009 50#define DNS_TYPE_NULL 0x000a 51#define DNS_TYPE_WKS 0x000b 52#define DNS_TYPE_PTR 0x000c 53#define DNS_TYPE_HINFO 0x000d 54#define DNS_TYPE_MINFO 0x000e 55#define DNS_TYPE_MX 0x000f 56#define DNS_TYPE_TEXT 0x0010 57#define DNS_TYPE_RP 0x0011 58#define DNS_TYPE_AFSDB 0x0012 59#define DNS_TYPE_X25 0x0013 60#define DNS_TYPE_ISDN 0x0014 61#define DNS_TYPE_RT 0x0015 62#define DNS_TYPE_NSAP 0x0016 63#define DNS_TYPE_NSAPPTR 0x0017 64#define DNS_TYPE_SIG 0x0018 65#define DNS_TYPE_KEY 0x0019 66#define DNS_TYPE_PX 0x001a 67#define DNS_TYPE_GPOS 0x001b 68#define DNS_TYPE_AAAA 0x001c 69#define DNS_TYPE_LOC 0x001d 70#define DNS_TYPE_NXT 0x001e 71#define DNS_TYPE_EID 0x001f 72#define DNS_TYPE_NIMLOC 0x0020 73#define DNS_TYPE_SRV 0x0021 74#define DNS_TYPE_ATMA 0x0022 75#define DNS_TYPE_NAPTR 0x0023 76#define DNS_TYPE_KX 0x0024 77#define DNS_TYPE_CERT 0x0025 78#define DNS_TYPE_A6 0x0026 79#define DNS_TYPE_DNAME 0x0027 80#define DNS_TYPE_SINK 0x0028 81#define DNS_TYPE_OPT 0x0029 82#define DNS_TYPE_UINFO 0x0064 83#define DNS_TYPE_UID 0x0065 84#define DNS_TYPE_GID 0x0066 85#define DNS_TYPE_UNSPEC 0x0067 86#define DNS_TYPE_ADDRS 0x00f8 87#define DNS_TYPE_TKEY 0x00f9 88#define DNS_TYPE_TSIG 0x00fa 89#define DNS_TYPE_IXFR 0x00fb 90#define DNS_TYPE_AXFR 0x00fc 91#define DNS_TYPE_MAILB 0x00fd 92#define DNS_TYPE_MAILA 0x00fe 93#define DNS_TYPE_ALL 0x00ff 94#define DNS_TYPE_ANY 0x00ff 95 96#define DNS_TYPE_WINS 0xff01 97#define DNS_TYPE_WINSR 0xff02 98#define DNS_TYPE_NBSTAT (DNS_TYPE_WINSR) 99 100#define DNSREC_QUESTION 0 101#define DNSREC_ANSWER 1 102#define DNSREC_AUTHORITY 2 103#define DNSREC_ADDITIONAL 3 104 105#define DNS_ATMA_MAX_ADDR_LENGTH 20 106 107#define DNS_ADDR_MAX_SOCKADDR_LENGTH 32 108 109typedef enum _DNS_CHARSET { 110 DnsCharSetUnknown, 111 DnsCharSetUnicode, 112 DnsCharSetUtf8, 113 DnsCharSetAnsi 114} DNS_CHARSET; 115 116typedef enum { 117 DnsConfigPrimaryDomainName_W, 118 DnsConfigPrimaryDomainName_A, 119 DnsConfigPrimaryDomainName_UTF8, 120 DnsConfigAdapterDomainName_W, 121 DnsConfigAdapterDomainName_A, 122 DnsConfigAdapterDomainName_UTF8, 123 DnsConfigDnsServerList, 124 DnsConfigSearchList, 125 DnsConfigAdapterInfo, 126 DnsConfigPrimaryHostNameRegistrationEnabled, 127 DnsConfigAdapterHostNameRegistrationEnabled, 128 DnsConfigAddressRegistrationMaxCount, 129 DnsConfigHostName_W, 130 DnsConfigHostName_A, 131 DnsConfigHostName_UTF8, 132 DnsConfigFullHostName_W, 133 DnsConfigFullHostName_A, 134 DnsConfigFullHostName_UTF8 135} DNS_CONFIG_TYPE; 136 137typedef enum { 138 DnsFreeFlat = 0, 139 DnsFreeRecordList, 140 DnsFreeParsedMessageFields 141} DNS_FREE_TYPE; 142 143typedef enum _DNS_NAME_FORMAT { 144 DnsNameDomain, 145 DnsNameDomainLabel, 146 DnsNameHostnameFull, 147 DnsNameHostnameLabel, 148 DnsNameWildcard, 149 DnsNameSrvRecord 150} DNS_NAME_FORMAT; 151 152typedef enum { 153 DnsSectionQuestion, 154 DnsSectionAnswer, 155 DnsSectionAuthority, 156 DnsSectionAdditional 157} DNS_SECTION; 158 159typedef struct _IP4_ARRAY { 160 DWORD AddrCount; 161 IP4_ADDRESS AddrArray[1]; 162} IP4_ARRAY, *PIP4_ARRAY; 163 164typedef struct { 165 DWORD IP6Dword[4]; 166} IP6_ADDRESS, *PIP6_ADDRESS, DNS_IP6_ADDRESS, *PDNS_IP6_ADDRESS; 167 168#pragma pack(push, 1) 169 170typedef struct _DnsAddr 171{ 172 CHAR MaxSa[DNS_ADDR_MAX_SOCKADDR_LENGTH]; 173#if defined(__midl) || defined(__WIDL__) 174 DWORD DnsAddrUserDword[8]; 175#else 176 union { 177 DWORD DnsAddrUserDword[8]; 178 } Data; 179#endif 180} DNS_ADDR, *PDNS_ADDR; 181 182typedef struct _DnsAddrArray 183{ 184 DWORD MaxCount; 185 DWORD AddrCount; 186 DWORD Tag; 187 WORD Family; 188 WORD WordReserved; 189 DWORD Flags; 190 DWORD MatchFlag; 191 DWORD Reserved1; 192 DWORD Reserved2; 193#if defined(__midl) || defined(__WIDL__) 194 [size_is(AddrCount)] DNS_ADDR AddrArray[]; 195#else 196 DNS_ADDR AddrArray[1]; 197#endif 198} DNS_ADDR_ARRAY, *PDNS_ADDR_ARRAY; 199 200typedef struct _DNS_HEADER { 201 WORD Xid; 202 BYTE RecursionDesired:1; 203 BYTE Truncation:1; 204 BYTE Authoritative:1; 205 BYTE Opcode:4; 206 BYTE IsResponse:1; 207 BYTE ResponseCode:4; 208 BYTE CheckingDisabled:1; 209 BYTE AuthenticatedData:1; 210 BYTE Reserved:1; 211 BYTE RecursionAvailable:1; 212 WORD QuestionCount; 213 WORD AnswerCount; 214 WORD NameServerCount; 215 WORD AdditionalCount; 216} DNS_HEADER, *PDNS_HEADER; 217 218typedef struct _DNS_WIRE_QUESTION { 219 WORD QuestionType; 220 WORD QuestionClass; 221} DNS_WIRE_QUESTION, *PDNS_WIRE_QUESTION; 222 223typedef struct _DNS_WIRE_RECORD { 224 WORD RecordType; 225 WORD RecordClass; 226 DWORD TimeToLive; 227 WORD DataLength; 228} DNS_WIRE_RECORD, *PDNS_WIRE_RECORD; 229 230#pragma pack(pop) 231 232typedef struct _DNS_MESSAGE_BUFFER { 233 DNS_HEADER MessageHead; 234 CHAR MessageBody[1]; 235} DNS_MESSAGE_BUFFER, *PDNS_MESSAGE_BUFFER; 236 237typedef struct _DnsRecordFlags { 238 DWORD Section:2; 239 DWORD Delete:1; 240 DWORD CharSet:2; 241 DWORD Unused:3; 242 DWORD Reserved:24; 243} DNS_RECORD_FLAGS; 244 245typedef struct { 246 IP4_ADDRESS IpAddress; 247} DNS_A_DATA, *PDNS_A_DATA; 248 249typedef struct { 250 DNS_IP6_ADDRESS Ip6Address; 251} DNS_AAAA_DATA, *PDNS_AAAA_DATA; 252 253typedef struct { 254 BYTE AddressType; 255 BYTE Address[DNS_ATMA_MAX_ADDR_LENGTH]; 256} DNS_ATMA_DATA, *PDNS_ATMA_DATA; 257 258typedef struct { 259 WORD wFlags; 260 BYTE chProtocol; 261 BYTE chAlgorithm; 262 BYTE Key[1]; 263} DNS_KEY_DATA, *PDNS_KEY_DATA; 264 265typedef struct { 266 WORD wVersion; 267 WORD wSize; 268 WORD wHorPrec; 269 WORD wVerPrec; 270 DWORD dwLatitude; 271 DWORD dwLongitude; 272 DWORD dwAltitude; 273} DNS_LOC_DATA, *PDNS_LOC_DATA; 274 275typedef struct { 276 LPSTR pNameMailbox; 277 LPSTR pNameErrorsMailbox; 278} DNS_MINFO_DATAA, *PDNS_MINFO_DATAA; 279 280typedef struct { 281 LPWSTR pNameMailbox; 282 LPWSTR pNameErrorsMailbox; 283} DNS_MINFO_DATAW, *PDNS_MINFO_DATAW; 284 285typedef struct { 286 LPSTR pNameExchange; 287 WORD wPreference; 288 WORD Pad; 289} DNS_MX_DATAA, *PDNS_MX_DATAA; 290 291typedef struct { 292 LPWSTR pNameExchange; 293 WORD wPreference; 294 WORD Pad; 295} DNS_MX_DATAW, *PDNS_MX_DATAW; 296 297typedef struct { 298 DWORD dwByteCount; 299 BYTE Data[1]; 300} DNS_NULL_DATA, *PDNS_NULL_DATA; 301 302typedef struct { 303 LPSTR pNameNext; 304 WORD wNumTypes; 305 WORD wTypes[1]; 306} DNS_NXT_DATAA, *PDNS_NXT_DATAA; 307 308typedef struct { 309 LPWSTR pNameNext; 310 WORD wNumTypes; 311 WORD wTypes[1]; 312} DNS_NXT_DATAW, *PDNS_NXT_DATAW; 313 314typedef struct { 315 LPSTR pNameHost; 316} DNS_PTR_DATAA, *PDNS_PTR_DATAA; 317 318typedef struct { 319 LPWSTR pNameHost; 320} DNS_PTR_DATAW, *PDNS_PTR_DATAW; 321 322typedef struct { 323 LPSTR pNameSigner; 324 WORD wTypeCovered; 325 BYTE chAlgorithm; 326 BYTE chLabelCount; 327 DWORD dwOriginalTtl; 328 DWORD dwExpiration; 329 DWORD dwTimeSigned; 330 WORD wKeyTag; 331 WORD Pad; 332 BYTE Signature[1]; 333} DNS_SIG_DATAA, *PDNS_SIG_DATAA; 334 335typedef struct { 336 LPWSTR pNameSigner; 337 WORD wTypeCovered; 338 BYTE chAlgorithm; 339 BYTE chLabelCount; 340 DWORD dwOriginalTtl; 341 DWORD dwExpiration; 342 DWORD dwTimeSigned; 343 WORD wKeyTag; 344 WORD Pad; 345 BYTE Signature[1]; 346} DNS_SIG_DATAW, *PDNS_SIG_DATAW; 347 348typedef struct { 349 LPSTR pNamePrimaryServer; 350 LPSTR pNameAdministrator; 351 DWORD dwSerialNo; 352 DWORD dwRefresh; 353 DWORD dwRetry; 354 DWORD dwExpire; 355 DWORD dwDefaultTtl; 356} DNS_SOA_DATAA, *PDNS_SOA_DATAA; 357 358typedef struct { 359 LPWSTR pNamePrimaryServer; 360 LPWSTR pNameAdministrator; 361 DWORD dwSerialNo; 362 DWORD dwRefresh; 363 DWORD dwRetry; 364 DWORD dwExpire; 365 DWORD dwDefaultTtl; 366} DNS_SOA_DATAW, *PDNS_SOA_DATAW; 367 368typedef struct { 369 LPSTR pNameTarget; 370 WORD wPriority; 371 WORD wWeight; 372 WORD wPort; 373 WORD Pad; 374} DNS_SRV_DATAA, *PDNS_SRV_DATAA; 375 376typedef struct { 377 LPWSTR pNameTarget; 378 WORD wPriority; 379 WORD wWeight; 380 WORD wPort; 381 WORD Pad; 382} DNS_SRV_DATAW, *PDNS_SRV_DATAW; 383 384typedef struct { 385 DWORD dwStringCount; 386 LPSTR pStringArray[1]; 387} DNS_TXT_DATAA, *PDNS_TXT_DATAA; 388 389typedef struct { 390 DWORD dwStringCount; 391 LPWSTR pStringArray[1]; 392} DNS_TXT_DATAW, *PDNS_TXT_DATAW; 393 394typedef struct { 395 LPSTR pNameAlgorithm; 396 PBYTE pAlgorithmPacket; 397 PBYTE pKey; 398 PBYTE pOtherData; 399 DWORD dwCreateTime; 400 DWORD dwExpireTime; 401 WORD wMode; 402 WORD wError; 403 WORD wKeyLength; 404 WORD wOtherLength; 405 UCHAR cAlgNameLength; 406 BOOL bPacketPointers; 407} DNS_TKEY_DATAA, *PDNS_TKEY_DATAA; 408 409typedef struct { 410 LPWSTR pNameAlgorithm; 411 PBYTE pAlgorithmPacket; 412 PBYTE pKey; 413 PBYTE pOtherData; 414 DWORD dwCreateTime; 415 DWORD dwExpireTime; 416 WORD wMode; 417 WORD wError; 418 WORD wKeyLength; 419 WORD wOtherLength; 420 UCHAR cAlgNameLength; 421 BOOL bPacketPointers; 422} DNS_TKEY_DATAW, *PDNS_TKEY_DATAW; 423 424typedef struct { 425 LPSTR pNameAlgorithm; 426 PBYTE pAlgorithmPacket; 427 PBYTE pSignature; 428 PBYTE pOtherData; 429 LONGLONG i64CreateTime; 430 WORD wFudgeTime; 431 WORD wOriginalXid; 432 WORD wError; 433 WORD wSigLength; 434 WORD wOtherLength; 435 UCHAR cAlgNameLength; 436 BOOL bPacketPointers; 437} DNS_TSIG_DATAA, *PDNS_TSIG_DATAA; 438 439typedef struct { 440 LPWSTR pNameAlgorithm; 441 PBYTE pAlgorithmPacket; 442 PBYTE pSignature; 443 PBYTE pOtherData; 444 LONGLONG i64CreateTime; 445 WORD wFudgeTime; 446 WORD wOriginalXid; 447 WORD wError; 448 WORD wSigLength; 449 WORD wOtherLength; 450 UCHAR cAlgNameLength; 451 BOOL bPacketPointers; 452} DNS_TSIG_DATAW, *PDNS_TSIG_DATAW; 453 454typedef struct { 455 DWORD dwMappingFlag; 456 DWORD dwLookupTimeout; 457 DWORD dwCacheTimeout; 458 DWORD cWinsServerCount; 459 IP4_ADDRESS WinsServers[1]; 460} DNS_WINS_DATA, *PDNS_WINS_DATA; 461 462typedef struct { 463 DWORD dwMappingFlag; 464 DWORD dwLookupTimeout; 465 DWORD dwCacheTimeout; 466 LPSTR pNameResultDomain; 467} DNS_WINSR_DATAA, *PDNS_WINSR_DATAA; 468 469typedef struct { 470 DWORD dwMappingFlag; 471 DWORD dwLookupTimeout; 472 DWORD dwCacheTimeout; 473 LPWSTR pNameResultDomain; 474} DNS_WINSR_DATAW, *PDNS_WINSR_DATAW; 475 476typedef struct { 477 IP4_ADDRESS IpAddress; 478 UCHAR chProtocol; 479 BYTE BitMask[1]; 480} DNS_WKS_DATA, *PDNS_WKS_DATA; 481 482typedef struct { 483 WORD wKeyTag; 484 BYTE chAlgorithm; 485 BYTE chDigestType; 486 WORD wDigestLength; 487 WORD wPad; 488 BYTE Digest[1]; 489} DNS_DS_DATA; 490 491typedef struct { 492 LPWSTR pNextDomainName; 493 WORD wTypeBitMapsLength; 494 WORD wPad; 495 BYTE TypeBitMaps[1]; 496} DNS_NSEC_DATAW; 497 498typedef struct { 499 WORD wFlags; 500 BYTE chProtocol; 501 BYTE chAlgorithm; 502 WORD wKeyLength; 503 WORD wPad; 504 BYTE Key[1]; 505} DNS_DNSKEY_DATA; 506 507typedef struct { 508 WORD wDataLength; 509 WORD wPad; 510 BYTE Data[1]; 511} DNS_OPT_DATA; 512 513typedef struct { 514 WORD wTypeCovered; 515 BYTE chAlgorithm; 516 BYTE chLabelCount; 517 DWORD dwOriginalTtl; 518 DWORD dwExpiration; 519 DWORD dwTimeSigned; 520 WORD wKeyTag; 521 WORD Pad; 522 LPWSTR pNameSigner; 523 BYTE Signature[1]; 524} DNS_RRSIG_DATAW; 525 526#if defined(__midl) || defined(__WIDL__) 527typedef [switch_type(unsigned short )] union DNS_DATAW { 528 [case(1)] DNS_A_DATA A; 529 [case(6)] DNS_SOA_DATAW SOA; 530 [case(12)] DNS_PTR_DATAW PTR; 531 [case(2)] DNS_PTR_DATAW NS; 532 [case(5)] DNS_PTR_DATAW CNAME; 533 [case(7)] DNS_PTR_DATAW MB; 534 [case(3)] DNS_PTR_DATAW MD; 535 [case(4)] DNS_PTR_DATAW MF; 536 [case(8)] DNS_PTR_DATAW MG; 537 [case(9)] DNS_PTR_DATAW MR; 538 [case(14)] DNS_MINFO_DATAW MINFO; 539 [case(17)] DNS_MINFO_DATAW RP; 540 [case(15)] DNS_MX_DATAW MX; 541 [case(18)] DNS_MX_DATAW AFSDB; 542 [case(21)] DNS_MX_DATAW RT; 543 [case(28)] DNS_AAAA_DATA AAAA; 544 [case(33)] DNS_SRV_DATAW SRV; 545 [case(34)] DNS_ATMA_DATA ATMA; 546 [case(43)] DNS_DS_DATA DS; 547 [case(46)] DNS_RRSIG_DATAW RRSIG; 548 [case(47)] DNS_NSEC_DATAW NSEC; 549 [case(48)] DNS_DNSKEY_DATA DNSKEY; 550 [case(41)] DNS_OPT_DATA OPT; 551} DNS_DATAW; 552 553typedef struct _DnsRecordW { 554 [unique]struct _DnsRecordW *pNext; 555 [unique][string] LPWSTR pName; 556 WORD wType; 557 WORD wDataLength; 558 DWORD Flags; 559 DWORD dwTtl; 560 DWORD dwReserved; 561 [switch_is(wType)] DNS_DATAW Data; 562} DNS_RECORDW, *PDNS_RECORDW; 563#else 564typedef struct _DnsRecordA { 565 struct _DnsRecordA* pNext; 566 LPSTR pName; 567 WORD wType; 568 WORD wDataLength; 569 union { 570 DWORD DW; 571 DNS_RECORD_FLAGS S; 572 } Flags; 573 DWORD dwTtl; 574 DWORD dwReserved; 575 union { 576 DNS_A_DATA A; 577 DNS_SOA_DATAA SOA, Soa; 578 DNS_PTR_DATAA PTR, Ptr, NS, Ns, CNAME, Cname, MB, Mb, MD, Md, MF, Mf, MG, Mg, MR, Mr; 579 DNS_MINFO_DATAA MINFO, Minfo, RP, Rp; 580 DNS_MX_DATAA MX, Mx, AFSDB, Afsdb, RT, Rt; 581 DNS_TXT_DATAA HINFO, Hinfo, ISDN, Isdn, TXT, Txt, X25; 582 DNS_NULL_DATA Null; 583 DNS_WKS_DATA WKS, Wks; 584 DNS_AAAA_DATA AAAA; 585 DNS_KEY_DATA KEY, Key; 586 DNS_SIG_DATAA SIG, Sig; 587 DNS_ATMA_DATA ATMA, Atma; 588 DNS_NXT_DATAA NXT, Nxt; 589 DNS_SRV_DATAA SRV, Srv; 590 DNS_TKEY_DATAA TKEY, Tkey; 591 DNS_TSIG_DATAA TSIG, Tsig; 592 DNS_WINS_DATA WINS, Wins; 593 DNS_WINSR_DATAA WINSR, WinsR, NBSTAT, Nbstat; 594 } Data; 595} DNS_RECORDA, *PDNS_RECORDA; 596 597typedef struct _DnsRecordW { 598 struct _DnsRecordW* pNext; 599 LPWSTR pName; 600 WORD wType; 601 WORD wDataLength; 602 union { 603 DWORD DW; 604 DNS_RECORD_FLAGS S; 605 } Flags; 606 DWORD dwTtl; 607 DWORD dwReserved; 608 union { 609 DNS_A_DATA A; 610 DNS_SOA_DATAW SOA, Soa; 611 DNS_PTR_DATAW PTR, Ptr, NS, Ns, CNAME, Cname, MB, Mb, MD, Md, MF, Mf, MG, Mg, MR, Mr; 612 DNS_MINFO_DATAW MINFO, Minfo, RP, Rp; 613 DNS_MX_DATAW MX, Mx, AFSDB, Afsdb, RT, Rt; 614 DNS_TXT_DATAW HINFO, Hinfo, ISDN, Isdn, TXT, Txt, X25; 615 DNS_NULL_DATA Null; 616 DNS_WKS_DATA WKS, Wks; 617 DNS_AAAA_DATA AAAA; 618 DNS_KEY_DATA KEY, Key; 619 DNS_SIG_DATAW SIG, Sig; 620 DNS_ATMA_DATA ATMA, Atma; 621 DNS_NXT_DATAW NXT, Nxt; 622 DNS_SRV_DATAW SRV, Srv; 623 DNS_TKEY_DATAW TKEY, Tkey; 624 DNS_TSIG_DATAW TSIG, Tsig; 625 DNS_WINS_DATA WINS, Wins; 626 DNS_WINSR_DATAW WINSR, WinsR, NBSTAT, Nbstat; 627 } Data; 628} DNS_RECORDW, *PDNS_RECORDW; 629#endif 630 631#ifdef UNICODE 632#define DNS_RECORD DNS_RECORDW 633#define PDNS_RECORD PDNS_RECORDW 634#else 635#define DNS_RECORD DNS_RECORDA 636#define PDNS_RECORD PDNS_RECORDA 637#endif 638 639typedef struct _DnsRRSet { 640 PDNS_RECORD pFirstRR; 641 PDNS_RECORD pLastRR; 642} DNS_RRSET, *PDNS_RRSET; 643 644#define DNS_RRSET_INIT(rrset) \ 645{ \ 646 PDNS_RRSET _prrset = &(rrset); \ 647 _prrset->pFirstRR = NULL; \ 648 _prrset->pLastRR = (PDNS_RECORD) &_prrset->pFirstRR; \ 649} 650 651#define DNS_RRSET_ADD(rrset, pnewRR) \ 652{ \ 653 PDNS_RRSET _prrset = &(rrset); \ 654 PDNS_RECORD _prrnew = (pnewRR); \ 655 _prrset->pLastRR->pNext = _prrnew; \ 656 _prrset->pLastRR = _prrnew; \ 657} 658 659#define DNS_RRSET_TERMINATE(rrset) \ 660{ \ 661 PDNS_RRSET _prrset = &(rrset); \ 662 _prrset->pLastRR->pNext = NULL; \ 663} 664 665#ifndef __WIDL__ 666// HACK 667 668DNS_STATUS 669WINAPI 670DnsAcquireContextHandle_A( 671 _In_ DWORD CredentialFlags, 672 _In_opt_ PVOID Credentials, 673 _Outptr_ PHANDLE pContext); 674 675DNS_STATUS 676WINAPI 677DnsAcquireContextHandle_W( 678 _In_ DWORD CredentialFlags, 679 _In_opt_ PVOID Credentials, 680 _Outptr_ PHANDLE pContext); 681 682DNS_STATUS 683WINAPI 684DnsExtractRecordsFromMessage_W( 685 _In_ PDNS_MESSAGE_BUFFER pDnsBuffer, 686 _In_ WORD wMessageLength, 687 _Outptr_ PDNS_RECORD *ppRecord); 688 689DNS_STATUS 690WINAPI 691DnsExtractRecordsFromMessage_UTF8( 692 _In_ PDNS_MESSAGE_BUFFER pDnsBuffer, 693 _In_ WORD wMessageLength, 694 _Outptr_ PDNS_RECORD *ppRecord); 695 696DNS_STATUS 697WINAPI 698DnsModifyRecordsInSet_A( 699 _In_opt_ PDNS_RECORD pAddRecords, 700 _In_opt_ PDNS_RECORD pDeleteRecords, 701 _In_ DWORD Options, 702 _In_opt_ HANDLE hCredentials, 703 _Inout_opt_ PIP4_ARRAY pExtraList, 704 _Inout_opt_ PVOID pReserved); 705 706DNS_STATUS 707WINAPI 708DnsModifyRecordsInSet_W( 709 _In_opt_ PDNS_RECORD pAddRecords, 710 _In_opt_ PDNS_RECORD pDeleteRecords, 711 _In_ DWORD Options, 712 _In_opt_ HANDLE hCredentials, 713 _Inout_opt_ PIP4_ARRAY pExtraList, 714 _Inout_opt_ PVOID pReserved); 715 716DNS_STATUS 717WINAPI 718DnsModifyRecordsInSet_UTF8( 719 _In_opt_ PDNS_RECORD pAddRecords, 720 _In_opt_ PDNS_RECORD pDeleteRecords, 721 _In_ DWORD Options, 722 _In_opt_ HANDLE hCredentials, 723 _Inout_opt_ PIP4_ARRAY pExtraList, 724 _Inout_opt_ PVOID pReserved); 725 726BOOL 727WINAPI 728DnsNameCompare_A( 729 _In_ PCSTR pszName1, 730 _In_ PCSTR pszName2); 731 732BOOL 733WINAPI 734DnsNameCompare_W( 735 _In_ PCWSTR pszwName1, 736 _In_ PCWSTR pszwName2); 737 738DNS_STATUS 739WINAPI 740DnsQuery_A( 741 _In_ PCSTR pszName, 742 _In_ WORD wType, 743 _In_ DWORD Options, 744 _Inout_opt_ PVOID pExtra, 745 _Outptr_result_maybenull_ PDNS_RECORD *ppQueryResults, 746 _Outptr_opt_result_maybenull_ PVOID *pReserved); 747 748DNS_STATUS 749WINAPI 750DnsQuery_W( 751 _In_ PCWSTR pszName, 752 _In_ WORD wType, 753 _In_ DWORD Options, 754 _Inout_opt_ PVOID pExtra, 755 _Outptr_result_maybenull_ PDNS_RECORD *ppQueryResults, 756 _Outptr_opt_result_maybenull_ PVOID *pReserved); 757 758DNS_STATUS 759WINAPI 760DnsQuery_UTF8( 761 _In_ PCSTR pszName, 762 _In_ WORD wType, 763 _In_ DWORD Options, 764 _Inout_opt_ PVOID pExtra, 765 _Outptr_result_maybenull_ PDNS_RECORD *ppQueryResults, 766 _Outptr_opt_result_maybenull_ PVOID *pReserved); 767 768DNS_STATUS 769WINAPI 770DnsQueryConfig( 771 _In_ DNS_CONFIG_TYPE Config, 772 _In_ DWORD Flag, 773 _In_opt_ PWSTR pwsAdapterName, 774 _In_opt_ PVOID pReserved, 775 _Out_writes_bytes_to_opt_(*pBufLen, *pBufLen) PVOID pBuffer, 776 _Inout_ PDWORD pBufLen); 777 778BOOL 779WINAPI 780DnsRecordCompare( 781 _In_ PDNS_RECORD, 782 _In_ PDNS_RECORD); 783 784PDNS_RECORD 785WINAPI 786DnsRecordCopyEx( 787 _In_ PDNS_RECORD pRecord, 788 _In_ DNS_CHARSET CharSetIn, 789 _In_ DNS_CHARSET CharSetOut); 790 791void 792WINAPI 793DnsRecordListFree( 794 _Inout_opt_ PDNS_RECORD, 795 _In_ DNS_FREE_TYPE); 796 797BOOL 798WINAPI 799DnsRecordSetCompare( 800 _Inout_ PDNS_RECORD pRR1, 801 _Inout_ PDNS_RECORD pRR2, 802 _Outptr_opt_result_maybenull_ PDNS_RECORD *ppDiff1, 803 _Outptr_opt_result_maybenull_ PDNS_RECORD *ppDiff2); 804 805PDNS_RECORD 806WINAPI 807DnsRecordSetCopyEx( 808 _In_ PDNS_RECORD pRecordSet, 809 _In_ DNS_CHARSET CharSetIn, 810 _In_ DNS_CHARSET CharSetOut); 811 812PDNS_RECORD 813WINAPI 814DnsRecordSetDetach( 815 _Inout_ PDNS_RECORD); 816 817void 818WINAPI 819DnsReleaseContextHandle( 820 _In_ HANDLE); 821 822DNS_STATUS 823WINAPI 824DnsReplaceRecordSetA( 825 _In_ PDNS_RECORD pReplaceSet, 826 _In_ DWORD Options, 827 _In_opt_ HANDLE hContext, 828 _Inout_opt_ PIP4_ARRAY pExtraInfo, 829 _Inout_opt_ PVOID pReserved); 830 831DNS_STATUS 832WINAPI 833DnsReplaceRecordSetW( 834 _In_ PDNS_RECORD pReplaceSet, 835 _In_ DWORD Options, 836 _In_opt_ HANDLE hContext, 837 _Inout_opt_ PIP4_ARRAY pExtraInfo, 838 _Inout_opt_ PVOID pReserved); 839 840DNS_STATUS 841WINAPI 842DnsReplaceRecordSetUTF8( 843 _In_ PDNS_RECORD pReplaceSet, 844 _In_ DWORD Options, 845 _In_opt_ HANDLE hContext, 846 _Inout_opt_ PIP4_ARRAY pExtraInfo, 847 _Inout_opt_ PVOID pReserved); 848 849DNS_STATUS 850WINAPI 851DnsValidateName_A( 852 _In_ LPCSTR, 853 _In_ DNS_NAME_FORMAT); 854 855DNS_STATUS 856WINAPI 857DnsValidateName_W( 858 _In_ LPCWSTR, 859 _In_ DNS_NAME_FORMAT); 860 861DNS_STATUS 862WINAPI 863DnsValidateName_UTF8( 864 _In_ LPCSTR, 865 _In_ DNS_NAME_FORMAT); 866 867BOOL 868WINAPI 869DnsWriteQuestionToBuffer_W( 870 _Inout_ PDNS_MESSAGE_BUFFER pDnsBuffer, 871 _Inout_ PDWORD pdwBufferSize, 872 _In_ LPWSTR pszName, 873 _In_ WORD wType, 874 _In_ WORD Xid, 875 _In_ BOOL fRecursionDesired); 876 877BOOL 878WINAPI 879DnsWriteQuestionToBuffer_UTF8( 880 _Inout_ PDNS_MESSAGE_BUFFER pDnsBuffer, 881 _Inout_ PDWORD pdwBufferSize, 882 _In_ LPSTR pszName, 883 _In_ WORD wType, 884 _In_ WORD Xid, 885 _In_ BOOL fRecursionDesired); 886#endif 887 888#ifdef UNICODE 889 890#define DNS_MINFO_DATA DNS_MINFO_DATAW 891#define PDNS_MINFO_DATA PDNS_MINFO_DATAW 892#define DNS_MX_DATA DNS_MX_DATAW 893#define PDNS_MX_DATA PDNS_MX_DATAW 894#define DNS_NXT_DATA DNS_NXT_DATAW 895#define PDNS_NXT_DATA PDNS_NXT_DATAW 896#define DNS_PTR_DATA DNS_PTR_DATAW 897#define PDNS_PTR_DATA PDNS_PTR_DATAW 898#define DNS_SIG_DATA DNS_SIG_DATAW 899#define PDNS_SIG_DATA PDNS_SIG_DATAW 900#define DNS_SOA_DATA DNS_SOA_DATAW 901#define PDNS_SOA_DATA PDNS_SOA_DATAW 902#define DNS_TXT_DATA DNS_TXT_DATAW 903#define PDNS_TXT_DATA PDNS_TXT_DATAW 904#define DNS_TKEY_DATA DNS_TKEY_DATAW 905#define PDNS_TKEY_DATA PDNS_TKEY_DATAW 906#define DNS_WINSR_DATA DNS_WINSR_DATAW 907#define PDNS_WINSR_DATA PDNS_WINSR_DATAW 908#define DnsAcquireContextHandle DnsAcquireContextHandle_W 909#define DnsModifyRecordsInSet DnsModifyRecordsInSet_W 910#define DnsNameCompare DnsNameCompare_W 911#define DnsQuery DnsQuery_W 912#define DnsReplaceRecordSet DnsReplaceRecordSetW 913#define DnsValidateName DnsValidateName_W 914 915#else /* UNICODE */ 916 917#define DNS_MINFO_DATA DNS_MINFO_DATAA 918#define PDNS_MINFO_DATA PDNS_MINFO_DATAA 919#define DNS_MX_DATA DNS_MX_DATAA 920#define PDNS_MX_DATA PDNS_MX_DATAA 921#define DNS_NXT_DATA DNS_NXT_DATAA 922#define PDNS_NXT_DATA PDNS_NXT_DATAA 923#define DNS_PTR_DATA DNS_PTR_DATAA 924#define PDNS_PTR_DATA PDNS_PTR_DATAA 925#define DNS_SIG_DATA DNS_SIG_DATAA 926#define PDNS_SIG_DATA PDNS_SIG_DATAA 927#define DNS_SOA_DATA DNS_SOA_DATAA 928#define PDNS_SOA_DATA PDNS_SOA_DATAA 929#define DNS_TXT_DATA DNS_TXT_DATAA 930#define PDNS_TXT_DATA PDNS_TXT_DATAA 931#define DNS_TKEY_DATA DNS_TKEY_DATAA 932#define PDNS_TKEY_DATA PDNS_TKEY_DATAA 933#define DNS_WINSR_DATA DNS_WINSR_DATAA 934#define PDNS_WINSR_DATA PDNS_WINSR_DATAA 935#define DnsAcquireContextHandle DnsAcquireContextHandle_A 936#define DnsModifyRecordsInSet DnsModifyRecordsInSet_A 937#define DnsNameCompare DnsNameCompare_A 938#define DnsQuery DnsQuery_A 939#define DnsReplaceRecordSet DnsReplaceRecordSetA 940#define DnsValidateName DnsValidateName_A 941 942#endif /* UNICODE */ 943 944#endif /* RC_INVOKED */ 945 946#ifdef __cplusplus 947} 948#endif 949 950#endif /* _WINDNS_INCLUDED_ */