|  windns.h (5.2.3790.3959-Windows 5.0)  |   |  windns.h (6.0.6002.18005-Windows 6.0)  | 
 
      | /*++ |   | /*++ | 
       |   |  | 
       | 
      | Copyright (c) 1996-2002  Microsoft Corporation |   | Copyright (c) 1996-2005  Microsoft Corporation | 
       |   |  | 
      | Module Name: |   | Module Name: | 
       |   |  | 
      |     windns.h |   |     windns.h | 
       |   |  | 
      | Abstract: |   | Abstract: | 
       |   |  | 
      |     Domain Name System (DNS) |   |     Domain Name System (DNS) | 
       |   |  | 
      |     DNS definitions and DNS API. |   |     DNS definitions and DNS API. | 
       |   |  | 
      | skipping to change at line 50 |   | skipping to change at line 50 | 
       |   |  | 
      | typedef LONG    DNS_STATUS, *PDNS_STATUS; |   | typedef LONG    DNS_STATUS, *PDNS_STATUS; | 
       |   |  | 
      | // |   | // | 
      | //  IP Address |   | //  IP Address | 
      | // |   | // | 
       |   |  | 
      | typedef DWORD   IP4_ADDRESS, *PIP4_ADDRESS; |   | typedef DWORD   IP4_ADDRESS, *PIP4_ADDRESS; | 
       |   |  | 
      | #define SIZEOF_IP4_ADDRESS                  (4) |   | #define SIZEOF_IP4_ADDRESS                  (4) | 
       | 
      | #define IP4_ADDRESS_STRING_LENGTH           (15) |   | #define IP4_ADDRESS_STRING_LENGTH           (16) | 
       |   |  | 
       |   | //  Backcompat only -- length def contains terminating NULL | 
       |   |                                                                                  | 
      | #define IP4_ADDRESS_STRING_BUFFER_LENGTH    (16) |   | #define IP4_ADDRESS_STRING_BUFFER_LENGTH    (16) | 
       |   |  | 
      | // |   | // | 
      | //  IP Address Array type |   | //  IP Address Array type | 
      | // |   | // | 
       |   |  | 
      | typedef struct  _IP4_ARRAY |   | typedef struct  _IP4_ARRAY | 
      | { |   | { | 
      |     DWORD           AddrCount; |   |     DWORD           AddrCount; | 
      | #ifdef MIDL_PASS |   | #ifdef MIDL_PASS | 
       |   |  | 
      | skipping to change at line 73 |   | skipping to change at line 76 | 
      |     IP4_ADDRESS     AddrArray[1]; |   |     IP4_ADDRESS     AddrArray[1]; | 
      | #endif |   | #endif | 
      | } |   | } | 
      | IP4_ARRAY, *PIP4_ARRAY; |   | IP4_ARRAY, *PIP4_ARRAY; | 
       |   |  | 
      | // |   | // | 
      | //  IPv6 Address |   | //  IPv6 Address | 
      | // |   | // | 
       |   |  | 
      | #ifdef MIDL_PASS |   | #ifdef MIDL_PASS | 
       | 
      | typedef struct |   |                                                                                  | 
      | { |   |  | 
      | #ifdef _WIN64 |   | #ifdef _WIN64 | 
       | 
      |     QWORD       IP6Qword[2]; |   | #pragma pack(push, 8) | 
      | #else |   | #else | 
       | 
      |     DWORD       IP6Dword[4]; |   | #pragma pack(push, 4) | 
      | #endif |   | #endif | 
       | 
       |   |                                                                                  | 
       |   | typedef struct | 
       |   | { | 
       |   |     QWORD       IP6Qword[2]; | 
      | } |   | } | 
      | IP6_ADDRESS, *PIP6_ADDRESS; |   | IP6_ADDRESS, *PIP6_ADDRESS; | 
       | 
      | #else |   |                                                                                  | 
       |   | #pragma pack(pop) | 
       |   |                                                                                  | 
       |   | #else // MIDL_PASS | 
       |   |                                                                                  | 
      | typedef union |   | typedef union | 
      | { |   | { | 
      | #ifdef _WIN64 |   | #ifdef _WIN64 | 
      |     QWORD       IP6Qword[2]; |   |     QWORD       IP6Qword[2]; | 
      | #endif |   | #endif | 
      |     DWORD       IP6Dword[4]; |   |     DWORD       IP6Dword[4]; | 
      |     WORD        IP6Word[8]; |   |     WORD        IP6Word[8]; | 
      |     BYTE        IP6Byte[16]; |   |     BYTE        IP6Byte[16]; | 
      | #ifdef  IN6_ADDR |   | #ifdef  IN6_ADDR | 
      |     IN6_ADDR    In6; |   |     IN6_ADDR    In6; | 
      | #endif |   | #endif | 
      | } |   | } | 
      | IP6_ADDRESS, *PIP6_ADDRESS; |   | IP6_ADDRESS, *PIP6_ADDRESS; | 
       | 
      | #endif |   |  | 
       |   |  | 
       | 
      | //  Backward compatibility |   | #endif // MIDL_PASS | 
       |   |  | 
      | //typedef IP6_ADDRESS  DNS_IP6_ADDRESS, *PDNS_IP6_ADDRESS; |   |  | 
       |   |  | 
      | // |   | // | 
      | //  IP6 string max is 45 bytes |   | //  IP6 string max is 45 bytes | 
      | //      - 6 WORDs in colon+hex (5 chars) |   | //      - 6 WORDs in colon+hex (5 chars) | 
      | //      - last DWORD as IP4 (15 chars) |   | //      - last DWORD as IP4 (15 chars) | 
       | 
       |   | //  but include | 
       |   | //      - 11 bytes for scope ID | 
       |   | //      - 6 bytes for port (inc. colon) | 
       |   | //      - two bytes to bracket address with port | 
       |   | //      - terminating NULL | 
      | // |   | // | 
       | 
       |   | //  Note:  this is a change to previous def, but a single | 
       |   | //      definition continaing space for ALL possible IPv6 | 
       |   | //      address strings, we elminate many possible errors | 
       |   |  | 
      | #undef  IP6_ADDRESS_STRING_LENGTH |   | #undef  IP6_ADDRESS_STRING_LENGTH | 
       | 
      | #define IP6_ADDRESS_STRING_LENGTH           (47) |   | #define IP6_ADDRESS_STRING_LENGTH           (65) | 
      | #define IP6_ADDRESS_STRING_BUFFER_LENGTH    (48) |   | #define IP6_ADDRESS_STRING_BUFFER_LENGTH    (65) | 
       |   |  | 
       | 
      | //  backcompat |   | // | 
      | //#define IPV6_ADDRESS_STRING_LENGTH      IP6_ADDRESS_STRING_LENGTH |   | //  IP4/IP6 combined maximum | 
       |   | // | 
       |   |  | 
       |   | #define DNS_ADDRESS_STRING_LENGTH           (IP6_ADDRESS_STRING_LENGTH) | 
       |   |  | 
      | // |   | // | 
      | //  Inline byte flipping -- can be done in registers |   | //  Inline byte flipping -- can be done in registers | 
      | // |   | // | 
       |   |  | 
      | #define INLINE_WORD_FLIP(out, in)   \ |   | #define INLINE_WORD_FLIP(out, in)   \ | 
      |         {                           \ |   |         {                           \ | 
      |             WORD _in = (in);        \ |   |             WORD _in = (in);        \ | 
      |             (out) = (_in << 8) | (_in >> 8);  \ |   |             (out) = (_in << 8) | (_in >> 8);  \ | 
      |         } |   |         } | 
       |   |  | 
      | skipping to change at line 178 |   | skipping to change at line 196 | 
      | #define DNS_MAX_NAME_LENGTH             (255) |   | #define DNS_MAX_NAME_LENGTH             (255) | 
      | #define DNS_MAX_LABEL_LENGTH            (63) |   | #define DNS_MAX_LABEL_LENGTH            (63) | 
       |   |  | 
      | #define DNS_MAX_NAME_BUFFER_LENGTH      (256) |   | #define DNS_MAX_NAME_BUFFER_LENGTH      (256) | 
      | #define DNS_MAX_LABEL_BUFFER_LENGTH     (64) |   | #define DNS_MAX_LABEL_BUFFER_LENGTH     (64) | 
       |   |  | 
      | // |   | // | 
      | //  Reverse lookup domain names |   | //  Reverse lookup domain names | 
      | // |   | // | 
       |   |  | 
       | 
      | #define DNS_IP4_REVERSE_DOMAIN_STRING_A ("in-addr.arpa.") |   | #define DNS_IP4_REVERSE_DOMAIN_STRING_A     ("in-addr.arpa.") | 
      | #define DNS_IP4_REVERSE_DOMAIN_STRING_W (L"in-addr.arpa.") |   | #define DNS_IP4_REVERSE_DOMAIN_STRING_W     (L"in-addr.arpa.") | 
      |                                                                                  |   |  | 
      | #define DNS_MAX_IP4_REVERSE_NAME_LENGTH \ |   |  | 
      |             (IP4_ADDRESS_STRING_LENGTH+1+sizeof(DNS_IP4_REVERSE_DOMAIN_STRING_A) |   |  | 
      | ) |   |  | 
       |   |  | 
      | #define DNS_MAX_IP4_REVERSE_NAME_BUFFER_LENGTH \ |   |  | 
      |             (DNS_MAX_IP4_REVERSE_NAME_LENGTH + 1) |   |  | 
       |   |  | 
       | 
      | #define DNS_IP6_REVERSE_DOMAIN_STRING_A ("ip6.arpa.") |   | #define DNS_MAX_IP4_REVERSE_NAME_LENGTH     (IP4_ADDRESS_STRING_LENGTH+15) | 
      | #define DNS_IP6_REVERSE_DOMAIN_STRING_W (L"ip6.arpa.") |   |             //(IP4_ADDRESS_STRING_LENGTH+1+sizeof(DNS_IP4_REVERSE_DOMAIN_STRING_ | 
       |   | A)) | 
       |   |  | 
       | 
      | #define DNS_MAX_IP6_REVERSE_NAME_LENGTH \ |   | #define DNS_IP6_REVERSE_DOMAIN_STRING_A     ("ip6.arpa.") | 
      |             (64+sizeof(DNS_IP6_REVERSE_DOMAIN_STRING_A)) |   | #define DNS_IP6_REVERSE_DOMAIN_STRING_W     (L"ip6.arpa.") | 
       |   |  | 
       | 
      | #define DNS_MAX_IP6_REVERSE_NAME_BUFFER_LENGTH \ |   | #define DNS_MAX_IP6_REVERSE_NAME_LENGTH     (75) | 
      |             (DNS_MAX_IP6_REVERSE_NAME_LENGTH + 1) |   |             //(64+sizeof(DNS_IP6_REVERSE_DOMAIN_STRING_A)) | 
       |   |  | 
      | //  Combined |   | //  Combined | 
       |   |  | 
       | 
      | #define DNS_MAX_REVERSE_NAME_LENGTH         DNS_MAX_IP6_REVERSE_NAME_LENGTH |   | #define DNS_MAX_REVERSE_NAME_LENGTH     DNS_MAX_IP6_REVERSE_NAME_LENGTH | 
      | #define DNS_MAX_REVERSE_NAME_BUFFER_LENGTH  DNS_MAX_IP6_REVERSE_NAME_BUFFER_LENG |   |  | 
      | TH |   |  | 
       |   |  | 
      | #ifdef UNICODE |   | #ifdef UNICODE | 
      | #define DNS_IP4_REVERSE_DOMAIN_STRING   DNS_IP4_REVERSE_DOMAIN_STRING_W |   | #define DNS_IP4_REVERSE_DOMAIN_STRING   DNS_IP4_REVERSE_DOMAIN_STRING_W | 
      | #define DNS_IP6_REVERSE_DOMAIN_STRING   DNS_IP6_REVERSE_DOMAIN_STRING_W |   | #define DNS_IP6_REVERSE_DOMAIN_STRING   DNS_IP6_REVERSE_DOMAIN_STRING_W | 
      | #else |   | #else | 
      | #define DNS_IP4_REVERSE_DOMAIN_STRING   DNS_IP4_REVERSE_DOMAIN_STRING_A |   | #define DNS_IP4_REVERSE_DOMAIN_STRING   DNS_IP4_REVERSE_DOMAIN_STRING_A | 
      | #define DNS_IP6_REVERSE_DOMAIN_STRING   DNS_IP6_REVERSE_DOMAIN_STRING_A |   | #define DNS_IP6_REVERSE_DOMAIN_STRING   DNS_IP6_REVERSE_DOMAIN_STRING_A | 
      | #endif |   | #endif | 
       |   |  | 
      | // |   | // | 
       | 
       |   | //  Backcompat only -- name def contains terminating NULL | 
       |   | // | 
       |   |  | 
       |   | #define DNS_MAX_IP4_REVERSE_NAME_BUFFER_LENGTH  DNS_MAX_IP4_REVERSE_NAME_LENGTH | 
       |   | #define DNS_MAX_IP6_REVERSE_NAME_BUFFER_LENGTH  DNS_MAX_IP6_REVERSE_NAME_LENGTH | 
       |   | #define DNS_MAX_REVERSE_NAME_BUFFER_LENGTH      DNS_MAX_REVERSE_NAME_LENGTH | 
       |   |  | 
       |   | // | 
      | //  DNS Text string limited by size representable |   | //  DNS Text string limited by size representable | 
      | //      in a single byte length field |   | //      in a single byte length field | 
       |   |  | 
      | #define DNS_MAX_TEXT_STRING_LENGTH  (255) |   | #define DNS_MAX_TEXT_STRING_LENGTH  (255) | 
      | // |   | // | 
      | //  DNS On-The-Wire Structures |   | //  DNS On-The-Wire Structures | 
      | // |   | // | 
       |   |  | 
      | #pragma pack(1) |   | #pragma pack(1) | 
       |   |  | 
       |   |  | 
      | skipping to change at line 766 |   | skipping to change at line 785 | 
      | // |   | // | 
      | //  Causes config info to be allocated. |   | //  Causes config info to be allocated. | 
      | //  Free with DnsFree(). |   | //  Free with DnsFree(). | 
      | // |   | // | 
       |   |  | 
      | #define DNS_CONFIG_FLAG_ALLOC   (0x00000001) |   | #define DNS_CONFIG_FLAG_ALLOC   (0x00000001) | 
       |   |  | 
      | DNS_STATUS |   | DNS_STATUS | 
      | WINAPI |   | WINAPI | 
      | DnsQueryConfig( |   | DnsQueryConfig( | 
       | 
      |     IN      DNS_CONFIG_TYPE     Config, |   |     __in                                    DNS_CONFIG_TYPE     Config, | 
      |     IN      DWORD               Flag, |   |     __in                                    DWORD               Flag, | 
      |     IN      PWSTR               pwsAdapterName, |   |     __in_opt                                PCWSTR              pwsAdapterName, | 
      |     IN      PVOID               pReserved, |   |     __in_opt                                PVOID               pReserved, | 
      |     OUT     PVOID               pBuffer, |   |     __out_bcount_part(*pBufLen, *pBufLen)   PVOID               pBuffer, | 
      |     IN OUT  PDWORD              pBufferLength |   |     __inout                                 PDWORD              pBufLen | 
      |     ); |   |     ); | 
      | // |   | // | 
      | //  DNS resource record structure |   | //  DNS resource record structure | 
      | // |   | // | 
       |   |  | 
      | // |   | // | 
      | //  Record data for specific types |   | //  Record data for specific types | 
      | // |   | // | 
       |   |  | 
      | typedef struct |   | typedef struct | 
       |   |  | 
      | skipping to change at line 989 |   | skipping to change at line 1008 | 
      |     PSTR            pNameTarget; |   |     PSTR            pNameTarget; | 
      |     WORD            wPriority; |   |     WORD            wPriority; | 
      |     WORD            wWeight; |   |     WORD            wWeight; | 
      |     WORD            wPort; |   |     WORD            wPort; | 
      |     WORD            Pad;            // keep ptrs DWORD aligned |   |     WORD            Pad;            // keep ptrs DWORD aligned | 
      | } |   | } | 
      | DNS_SRV_DATAA, *PDNS_SRV_DATAA; |   | DNS_SRV_DATAA, *PDNS_SRV_DATAA; | 
       |   |  | 
      | typedef struct |   | typedef struct | 
      | { |   | { | 
       | 
       |   |     WORD            wOrder; | 
       |   |     WORD            wPreference; | 
       |   |     PWSTR           pFlags; | 
       |   |     PWSTR           pService; | 
       |   |     PWSTR           pRegularExpression; | 
       |   |     PWSTR           pReplacement; | 
       |   | } | 
       |   | DNS_NAPTR_DATAW, *PDNS_NAPTR_DATAW; | 
       |   |  | 
       |   | typedef struct | 
       |   | { | 
       |   |     WORD            wOrder; | 
       |   |     WORD            wPreference; | 
       |   |     PSTR            pFlags; | 
       |   |     PSTR            pService; | 
       |   |     PSTR            pRegularExpression; | 
       |   |     PSTR            pReplacement; | 
       |   | } | 
       |   | DNS_NAPTR_DATAA, *PDNS_NAPTR_DATAA; | 
       |   |  | 
       |   | typedef struct | 
       |   | { | 
      |     BYTE            AddressType; |   |     BYTE            AddressType; | 
      |     BYTE            Address[ DNS_ATMA_MAX_ADDR_LENGTH ]; |   |     BYTE            Address[ DNS_ATMA_MAX_ADDR_LENGTH ]; | 
       |   |  | 
      |     //  E164 -- Null terminated string of less than |   |     //  E164 -- Null terminated string of less than | 
      |     //      DNS_ATMA_MAX_ADDR_LENGTH |   |     //      DNS_ATMA_MAX_ADDR_LENGTH | 
      |     // |   |     // | 
      |     //  For NSAP (AESA) BCD encoding of exactly |   |     //  For NSAP (AESA) BCD encoding of exactly | 
      |     //      DNS_ATMA_AESA_ADDR_LENGTH |   |     //      DNS_ATMA_AESA_ADDR_LENGTH | 
      | } |   | } | 
      | DNS_ATMA_DATA, *PDNS_ATMA_DATA; |   | DNS_ATMA_DATA, *PDNS_ATMA_DATA; | 
       |   |  | 
      | skipping to change at line 1113 |   | skipping to change at line 1154 | 
       |   |  | 
      | #ifdef UNICODE |   | #ifdef UNICODE | 
      | typedef DNS_PTR_DATAW   DNS_PTR_DATA,   *PDNS_PTR_DATA; |   | typedef DNS_PTR_DATAW   DNS_PTR_DATA,   *PDNS_PTR_DATA; | 
      | typedef DNS_SOA_DATAW   DNS_SOA_DATA,   *PDNS_SOA_DATA; |   | typedef DNS_SOA_DATAW   DNS_SOA_DATA,   *PDNS_SOA_DATA; | 
      | typedef DNS_MINFO_DATAW DNS_MINFO_DATA, *PDNS_MINFO_DATA; |   | typedef DNS_MINFO_DATAW DNS_MINFO_DATA, *PDNS_MINFO_DATA; | 
      | typedef DNS_MX_DATAW    DNS_MX_DATA,    *PDNS_MX_DATA; |   | typedef DNS_MX_DATAW    DNS_MX_DATA,    *PDNS_MX_DATA; | 
      | typedef DNS_TXT_DATAW   DNS_TXT_DATA,   *PDNS_TXT_DATA; |   | typedef DNS_TXT_DATAW   DNS_TXT_DATA,   *PDNS_TXT_DATA; | 
      | typedef DNS_SIG_DATAW   DNS_SIG_DATA,   *PDNS_SIG_DATA; |   | typedef DNS_SIG_DATAW   DNS_SIG_DATA,   *PDNS_SIG_DATA; | 
      | typedef DNS_NXT_DATAW   DNS_NXT_DATA,   *PDNS_NXT_DATA; |   | typedef DNS_NXT_DATAW   DNS_NXT_DATA,   *PDNS_NXT_DATA; | 
      | typedef DNS_SRV_DATAW   DNS_SRV_DATA,   *PDNS_SRV_DATA; |   | typedef DNS_SRV_DATAW   DNS_SRV_DATA,   *PDNS_SRV_DATA; | 
       | 
       |   | typedef DNS_NAPTR_DATAW DNS_NAPTR_DATA, *PDNS_NAPTR_DATA; | 
      | typedef DNS_TKEY_DATAW  DNS_TKEY_DATA,  *PDNS_TKEY_DATA; |   | typedef DNS_TKEY_DATAW  DNS_TKEY_DATA,  *PDNS_TKEY_DATA; | 
      | typedef DNS_TSIG_DATAW  DNS_TSIG_DATA,  *PDNS_TSIG_DATA; |   | typedef DNS_TSIG_DATAW  DNS_TSIG_DATA,  *PDNS_TSIG_DATA; | 
      | typedef DNS_WINSR_DATAW DNS_WINSR_DATA, *PDNS_WINSR_DATA; |   | typedef DNS_WINSR_DATAW DNS_WINSR_DATA, *PDNS_WINSR_DATA; | 
      | #else |   | #else | 
      | typedef DNS_PTR_DATAA   DNS_PTR_DATA,   *PDNS_PTR_DATA; |   | typedef DNS_PTR_DATAA   DNS_PTR_DATA,   *PDNS_PTR_DATA; | 
      | typedef DNS_SOA_DATAA   DNS_SOA_DATA,   *PDNS_SOA_DATA; |   | typedef DNS_SOA_DATAA   DNS_SOA_DATA,   *PDNS_SOA_DATA; | 
      | typedef DNS_MINFO_DATAA DNS_MINFO_DATA, *PDNS_MINFO_DATA; |   | typedef DNS_MINFO_DATAA DNS_MINFO_DATA, *PDNS_MINFO_DATA; | 
      | typedef DNS_MX_DATAA    DNS_MX_DATA,    *PDNS_MX_DATA; |   | typedef DNS_MX_DATAA    DNS_MX_DATA,    *PDNS_MX_DATA; | 
      | typedef DNS_TXT_DATAA   DNS_TXT_DATA,   *PDNS_TXT_DATA; |   | typedef DNS_TXT_DATAA   DNS_TXT_DATA,   *PDNS_TXT_DATA; | 
      | typedef DNS_SIG_DATAA   DNS_SIG_DATA,   *PDNS_SIG_DATA; |   | typedef DNS_SIG_DATAA   DNS_SIG_DATA,   *PDNS_SIG_DATA; | 
      | typedef DNS_NXT_DATAA   DNS_NXT_DATA,   *PDNS_NXT_DATA; |   | typedef DNS_NXT_DATAA   DNS_NXT_DATA,   *PDNS_NXT_DATA; | 
      | typedef DNS_SRV_DATAA   DNS_SRV_DATA,   *PDNS_SRV_DATA; |   | typedef DNS_SRV_DATAA   DNS_SRV_DATA,   *PDNS_SRV_DATA; | 
       | 
       |   | typedef DNS_NAPTR_DATAA DNS_NAPTR_DATA, *PDNS_NAPTR_DATA; | 
      | typedef DNS_TKEY_DATAA  DNS_TKEY_DATA,  *PDNS_TKEY_DATA; |   | typedef DNS_TKEY_DATAA  DNS_TKEY_DATA,  *PDNS_TKEY_DATA; | 
      | typedef DNS_TSIG_DATAA  DNS_TSIG_DATA,  *PDNS_TSIG_DATA; |   | typedef DNS_TSIG_DATAA  DNS_TSIG_DATA,  *PDNS_TSIG_DATA; | 
      | typedef DNS_WINSR_DATAA DNS_WINSR_DATA, *PDNS_WINSR_DATA; |   | typedef DNS_WINSR_DATAA DNS_WINSR_DATA, *PDNS_WINSR_DATA; | 
      | #endif |   | #endif | 
       |   |  | 
      | // |   | // | 
      | //  Length of non-fixed-length data types |   | //  Length of non-fixed-length data types | 
      | // |   | // | 
       |   |  | 
      | #define DNS_TEXT_RECORD_LENGTH(StringCount) \ |   | #define DNS_TEXT_RECORD_LENGTH(StringCount) \ | 
       |   |  | 
      | skipping to change at line 1220 |   | skipping to change at line 1263 | 
      | // |   | // | 
      | //  Note:  The dwReserved flag serves to insure that the substructures |   | //  Note:  The dwReserved flag serves to insure that the substructures | 
      | //  start on 64-bit boundaries.  Do NOT pack this structure, as the |   | //  start on 64-bit boundaries.  Do NOT pack this structure, as the | 
      | //  substructures may contain pointers or int64 values which are |   | //  substructures may contain pointers or int64 values which are | 
      | //  properly aligned unpacked. |   | //  properly aligned unpacked. | 
      | // |   | // | 
       |   |  | 
      | #ifdef MIDL_PASS |   | #ifdef MIDL_PASS | 
       |   |  | 
      | #define PDNS_RECORD     PVOID |   | #define PDNS_RECORD     PVOID | 
       | 
       |   | #define PDNS_RECORDA    PVOID | 
       |   | #define PDNS_RECORDW    PVOID | 
       |   |  | 
      | #else |   | #else | 
       |   |  | 
      | typedef struct _DnsRecordW |   | typedef struct _DnsRecordW | 
      | { |   | { | 
      |     struct _DnsRecordW *    pNext; |   |     struct _DnsRecordW *    pNext; | 
      |     PWSTR                   pName; |   |     PWSTR                   pName; | 
      |     WORD                    wType; |   |     WORD                    wType; | 
      |     WORD                    wDataLength;    // Not referenced for DNS record typ
es |   |     WORD                    wDataLength;    // Not referenced for DNS record typ
es | 
      |                                             // defined above. |   |                                             // defined above. | 
       |   |  | 
      | skipping to change at line 1249 |   | skipping to change at line 1294 | 
       |   |  | 
      |     //  Record Data |   |     //  Record Data | 
       |   |  | 
      |     union |   |     union | 
      |     { |   |     { | 
      |         DNS_A_DATA          A; |   |         DNS_A_DATA          A; | 
      |         DNS_SOA_DATAW       SOA, Soa; |   |         DNS_SOA_DATAW       SOA, Soa; | 
      |         DNS_PTR_DATAW       PTR, Ptr, |   |         DNS_PTR_DATAW       PTR, Ptr, | 
      |                             NS, Ns, |   |                             NS, Ns, | 
      |                             CNAME, Cname, |   |                             CNAME, Cname, | 
       | 
       |   |                             DNAME, Dname, | 
      |                             MB, Mb, |   |                             MB, Mb, | 
      |                             MD, Md, |   |                             MD, Md, | 
      |                             MF, Mf, |   |                             MF, Mf, | 
      |                             MG, Mg, |   |                             MG, Mg, | 
      |                             MR, Mr; |   |                             MR, Mr; | 
      |         DNS_MINFO_DATAW     MINFO, Minfo, |   |         DNS_MINFO_DATAW     MINFO, Minfo, | 
      |                             RP, Rp; |   |                             RP, Rp; | 
      |         DNS_MX_DATAW        MX, Mx, |   |         DNS_MX_DATAW        MX, Mx, | 
      |                             AFSDB, Afsdb, |   |                             AFSDB, Afsdb, | 
      |                             RT, Rt; |   |                             RT, Rt; | 
       |   |  | 
      | skipping to change at line 1271 |   | skipping to change at line 1317 | 
      |                             TXT, Txt, |   |                             TXT, Txt, | 
      |                             X25; |   |                             X25; | 
      |         DNS_NULL_DATA       Null; |   |         DNS_NULL_DATA       Null; | 
      |         DNS_WKS_DATA        WKS, Wks; |   |         DNS_WKS_DATA        WKS, Wks; | 
      |         DNS_AAAA_DATA       AAAA; |   |         DNS_AAAA_DATA       AAAA; | 
      |         DNS_KEY_DATA        KEY, Key; |   |         DNS_KEY_DATA        KEY, Key; | 
      |         DNS_SIG_DATAW       SIG, Sig; |   |         DNS_SIG_DATAW       SIG, Sig; | 
      |         DNS_ATMA_DATA       ATMA, Atma; |   |         DNS_ATMA_DATA       ATMA, Atma; | 
      |         DNS_NXT_DATAW       NXT, Nxt; |   |         DNS_NXT_DATAW       NXT, Nxt; | 
      |         DNS_SRV_DATAW       SRV, Srv; |   |         DNS_SRV_DATAW       SRV, Srv; | 
       | 
       |   |         DNS_NAPTR_DATAW     NAPTR, Naptr; | 
      |         DNS_TKEY_DATAW      TKEY, Tkey; |   |         DNS_TKEY_DATAW      TKEY, Tkey; | 
      |         DNS_TSIG_DATAW      TSIG, Tsig; |   |         DNS_TSIG_DATAW      TSIG, Tsig; | 
      |         DNS_WINS_DATA       WINS, Wins; |   |         DNS_WINS_DATA       WINS, Wins; | 
      |         DNS_WINSR_DATAW     WINSR, WinsR, NBSTAT, Nbstat; |   |         DNS_WINSR_DATAW     WINSR, WinsR, NBSTAT, Nbstat; | 
       |   |  | 
      |     } Data; |   |     } Data; | 
      | } |   | } | 
      | DNS_RECORDW, *PDNS_RECORDW; |   | DNS_RECORDW, *PDNS_RECORDW; | 
       |   |  | 
      | typedef struct _DnsRecordA |   | typedef struct _DnsRecordA | 
       |   |  | 
      | skipping to change at line 1306 |   | skipping to change at line 1353 | 
       |   |  | 
      |     //  Record Data |   |     //  Record Data | 
       |   |  | 
      |     union |   |     union | 
      |     { |   |     { | 
      |         DNS_A_DATA          A; |   |         DNS_A_DATA          A; | 
      |         DNS_SOA_DATAA       SOA, Soa; |   |         DNS_SOA_DATAA       SOA, Soa; | 
      |         DNS_PTR_DATAA       PTR, Ptr, |   |         DNS_PTR_DATAA       PTR, Ptr, | 
      |                             NS, Ns, |   |                             NS, Ns, | 
      |                             CNAME, Cname, |   |                             CNAME, Cname, | 
       | 
       |   |                             DNAME, Dname, | 
      |                             MB, Mb, |   |                             MB, Mb, | 
      |                             MD, Md, |   |                             MD, Md, | 
      |                             MF, Mf, |   |                             MF, Mf, | 
      |                             MG, Mg, |   |                             MG, Mg, | 
      |                             MR, Mr; |   |                             MR, Mr; | 
      |         DNS_MINFO_DATAA     MINFO, Minfo, |   |         DNS_MINFO_DATAA     MINFO, Minfo, | 
      |                             RP, Rp; |   |                             RP, Rp; | 
      |         DNS_MX_DATAA        MX, Mx, |   |         DNS_MX_DATAA        MX, Mx, | 
      |                             AFSDB, Afsdb, |   |                             AFSDB, Afsdb, | 
      |                             RT, Rt; |   |                             RT, Rt; | 
       |   |  | 
      | skipping to change at line 1328 |   | skipping to change at line 1376 | 
      |                             TXT, Txt, |   |                             TXT, Txt, | 
      |                             X25; |   |                             X25; | 
      |         DNS_NULL_DATA       Null; |   |         DNS_NULL_DATA       Null; | 
      |         DNS_WKS_DATA        WKS, Wks; |   |         DNS_WKS_DATA        WKS, Wks; | 
      |         DNS_AAAA_DATA       AAAA; |   |         DNS_AAAA_DATA       AAAA; | 
      |         DNS_KEY_DATA        KEY, Key; |   |         DNS_KEY_DATA        KEY, Key; | 
      |         DNS_SIG_DATAA       SIG, Sig; |   |         DNS_SIG_DATAA       SIG, Sig; | 
      |         DNS_ATMA_DATA       ATMA, Atma; |   |         DNS_ATMA_DATA       ATMA, Atma; | 
      |         DNS_NXT_DATAA       NXT, Nxt; |   |         DNS_NXT_DATAA       NXT, Nxt; | 
      |         DNS_SRV_DATAA       SRV, Srv; |   |         DNS_SRV_DATAA       SRV, Srv; | 
       | 
       |   |         DNS_NAPTR_DATAA     NAPTR, Naptr; | 
      |         DNS_TKEY_DATAA      TKEY, Tkey; |   |         DNS_TKEY_DATAA      TKEY, Tkey; | 
      |         DNS_TSIG_DATAA      TSIG, Tsig; |   |         DNS_TSIG_DATAA      TSIG, Tsig; | 
      |         DNS_WINS_DATA       WINS, Wins; |   |         DNS_WINS_DATA       WINS, Wins; | 
      |         DNS_WINSR_DATAA     WINSR, WinsR, NBSTAT, Nbstat; |   |         DNS_WINSR_DATAA     WINSR, WinsR, NBSTAT, Nbstat; | 
       |   |  | 
      |     } Data; |   |     } Data; | 
      | } |   | } | 
      | DNS_RECORDA, *PDNS_RECORDA; |   | DNS_RECORDA, *PDNS_RECORDA; | 
       |   |  | 
      | #ifdef UNICODE |   | #ifdef UNICODE | 
       |   |  | 
      | skipping to change at line 1431 |   | skipping to change at line 1480 | 
      |     DnsCharSetUnknown, |   |     DnsCharSetUnknown, | 
      |     DnsCharSetUnicode, |   |     DnsCharSetUnicode, | 
      |     DnsCharSetUtf8, |   |     DnsCharSetUtf8, | 
      |     DnsCharSetAnsi, |   |     DnsCharSetAnsi, | 
      | } |   | } | 
      | DNS_CHARSET; |   | DNS_CHARSET; | 
       |   |  | 
      | PDNS_RECORD |   | PDNS_RECORD | 
      | WINAPI |   | WINAPI | 
      | DnsRecordCopyEx( |   | DnsRecordCopyEx( | 
       | 
      |     IN      PDNS_RECORD     pRecord, |   |     __in    PDNS_RECORD     pRecord, | 
      |     IN      DNS_CHARSET     CharSetIn, |   |     __in    DNS_CHARSET     CharSetIn, | 
      |     IN      DNS_CHARSET     CharSetOut |   |     __in    DNS_CHARSET     CharSetOut | 
      |     ); |   |     ); | 
       |   |  | 
      | PDNS_RECORD |   | PDNS_RECORD | 
      | WINAPI |   | WINAPI | 
      | DnsRecordSetCopyEx( |   | DnsRecordSetCopyEx( | 
       | 
      |     IN      PDNS_RECORD     pRecordSet, |   |     __in    PDNS_RECORD     pRecordSet, | 
      |     IN      DNS_CHARSET     CharSetIn, |   |     __in    DNS_CHARSET     CharSetIn, | 
      |     IN      DNS_CHARSET     CharSetOut |   |     __in    DNS_CHARSET     CharSetOut | 
      |     ); |   |     ); | 
       |   |  | 
      | #ifdef UNICODE |   | #ifdef UNICODE | 
      | #define DnsRecordCopy(pRR)  \ |   | #define DnsRecordCopy(pRR)  \ | 
      |         DnsRecordCopyEx( (pRR), DnsCharSetUnicode, DnsCharSetUnicode ) |   |         DnsRecordCopyEx( (pRR), DnsCharSetUnicode, DnsCharSetUnicode ) | 
      | #define DnsRecordSetCopy(pRR)  \ |   | #define DnsRecordSetCopy(pRR)  \ | 
      |         DnsRecordSetCopyEx( (pRR), DnsCharSetUnicode, DnsCharSetUnicode ) |   |         DnsRecordSetCopyEx( (pRR), DnsCharSetUnicode, DnsCharSetUnicode ) | 
      | #else |   | #else | 
      | #define DnsRecordCopy(pRR)  \ |   | #define DnsRecordCopy(pRR)  \ | 
      |         DnsRecordCopyEx( (pRR), DnsCharSetAnsi, DnsCharSetAnsi ) |   |         DnsRecordCopyEx( (pRR), DnsCharSetAnsi, DnsCharSetAnsi ) | 
       |   |  | 
      | skipping to change at line 1469 |   | skipping to change at line 1518 | 
      | //  Note:  these routines only compare records of the SAME character set. |   | //  Note:  these routines only compare records of the SAME character set. | 
      | //  (ANSI, unicode or UTF8).  Furthermore the routines assume the character |   | //  (ANSI, unicode or UTF8).  Furthermore the routines assume the character | 
      | //  set is indicated within the record.  If compare of user created, rather |   | //  set is indicated within the record.  If compare of user created, rather | 
      | //  than DNS API created record lists is desired, then caller should use |   | //  than DNS API created record lists is desired, then caller should use | 
      | //  DnsRecordCopy API and compare copies. |   | //  DnsRecordCopy API and compare copies. | 
      | // |   | // | 
       |   |  | 
      | BOOL |   | BOOL | 
      | WINAPI |   | WINAPI | 
      | DnsRecordCompare( |   | DnsRecordCompare( | 
       | 
      |     IN      PDNS_RECORD     pRecord1, |   |     __in            PDNS_RECORD     pRecord1, | 
      |     IN      PDNS_RECORD     pRecord2 |   |     __in            PDNS_RECORD     pRecord2 | 
      |     ); |   |     ); | 
       |   |  | 
      | BOOL |   | BOOL | 
      | WINAPI |   | WINAPI | 
      | DnsRecordSetCompare( |   | DnsRecordSetCompare( | 
       | 
      |     IN OUT  PDNS_RECORD     pRR1, |   |     __inout                 PDNS_RECORD     pRR1, | 
      |     IN OUT  PDNS_RECORD     pRR2, |   |     __inout                 PDNS_RECORD     pRR2, | 
      |     OUT     PDNS_RECORD *   ppDiff1, |   |     __deref_opt_out_opt     PDNS_RECORD *   ppDiff1, | 
      |     OUT     PDNS_RECORD *   ppDiff2 |   |     __deref_opt_out_opt     PDNS_RECORD *   ppDiff2 | 
      |     ); |   |     ); | 
       |   |  | 
      | // |   | // | 
      | //  Detach next record set from record list |   | //  Detach next record set from record list | 
      | // |   | // | 
       |   |  | 
      | PDNS_RECORD |   | PDNS_RECORD | 
      | DnsRecordSetDetach( |   | DnsRecordSetDetach( | 
       | 
      |     IN OUT  PDNS_RECORD     pRecordList |   |     __inout         PDNS_RECORD     pRecordList | 
      |     ); |   |     ); | 
       |   |  | 
      | // |   | // | 
      | //  Free structures returned from dnsapi.dll |   | //  Free structures returned from dnsapi.dll | 
      | // |   | // | 
      | //  Currently supported free structures: |   | //  Currently supported free structures: | 
      | //      Flat -- flat structure, including those allocated by DnsQueryConfig() |   | //      Flat -- flat structure, including those allocated by DnsQueryConfig() | 
      | //      RecordList -- deep record list free, including sub-fields of DNS_RECORD; |   | //      RecordList -- deep record list free, including sub-fields of DNS_RECORD; | 
      | //          includes those returned by DnsQuery() or DnsRecordSetCopy() |   | //          includes those returned by DnsQuery() or DnsRecordSetCopy() | 
      | // |   | // | 
       |   |  | 
      | skipping to change at line 1511 |   | skipping to change at line 1560 | 
      | { |   | { | 
      |     DnsFreeFlat = 0, |   |     DnsFreeFlat = 0, | 
      |     DnsFreeRecordList, |   |     DnsFreeRecordList, | 
      |     DnsFreeParsedMessageFields |   |     DnsFreeParsedMessageFields | 
      | } |   | } | 
      | DNS_FREE_TYPE; |   | DNS_FREE_TYPE; | 
       |   |  | 
      | VOID |   | VOID | 
      | WINAPI |   | WINAPI | 
      | DnsFree( |   | DnsFree( | 
       | 
      |     IN OUT  PVOID           pData, |   |     __inout     PVOID           pData, | 
      |     IN      DNS_FREE_TYPE   FreeType |   |     __in        DNS_FREE_TYPE   FreeType | 
      |     ); |   |     ); | 
       |   |  | 
      | // |   | // | 
      | //  Backward compatibility with Win2K, do not use for XP+ applications |   | //  Backward compatibility with Win2K, do not use for XP+ applications | 
      | // |   | // | 
      | //  To free record lists, code |   | //  To free record lists, code | 
      | //      DnsFree( pRecordList, DnsFreeRecordList ); |   | //      DnsFree( pRecordList, DnsFreeRecordList ); | 
      | // |   | // | 
       |   |  | 
      | #define DnsFreeRecordListDeep   DnsFreeRecordList |   | #define DnsFreeRecordListDeep   DnsFreeRecordList | 
       |   |  | 
       | 
       |   | #if(_WIN32_WINNT >= 0x0501) | 
       |   | #define DnsRecordListFree(p,t)  DnsFree(p,DnsFreeRecordList) | 
       |   | #else | 
      | VOID |   | VOID | 
      | WINAPI |   | WINAPI | 
      | DnsRecordListFree( |   | DnsRecordListFree( | 
       | 
      |     IN OUT  PDNS_RECORD     pRecordList, |   |     __inout_opt PDNS_RECORD     pRecordList, | 
      |     IN      DNS_FREE_TYPE   FreeType |   |     __in        DNS_FREE_TYPE   FreeType | 
      |     ); |   |     ); | 
       | 
       |   | #endif /* _WIN32_WINNT >= 0x0501 */ | 
      | // |   | // | 
      | //  DNS Query API |   | //  DNS Query API | 
      | // |   | // | 
       |   |  | 
      | // |   | // | 
      | //  Options for DnsQuery |   | //  Options for DnsQuery | 
      | // |   | // | 
       |   |  | 
      | #define DNS_QUERY_STANDARD                  0x00000000 |   | #define DNS_QUERY_STANDARD                  0x00000000 | 
      | #define DNS_QUERY_ACCEPT_TRUNCATED_RESPONSE 0x00000001 |   | #define DNS_QUERY_ACCEPT_TRUNCATED_RESPONSE 0x00000001 | 
       |   |  | 
      | skipping to change at line 1552 |   | skipping to change at line 1605 | 
      | #define DNS_QUERY_BYPASS_CACHE              0x00000008 |   | #define DNS_QUERY_BYPASS_CACHE              0x00000008 | 
       |   |  | 
      | #define DNS_QUERY_NO_WIRE_QUERY             0x00000010 |   | #define DNS_QUERY_NO_WIRE_QUERY             0x00000010 | 
      | #define DNS_QUERY_NO_LOCAL_NAME             0x00000020 |   | #define DNS_QUERY_NO_LOCAL_NAME             0x00000020 | 
      | #define DNS_QUERY_NO_HOSTS_FILE             0x00000040 |   | #define DNS_QUERY_NO_HOSTS_FILE             0x00000040 | 
      | #define DNS_QUERY_NO_NETBT                  0x00000080 |   | #define DNS_QUERY_NO_NETBT                  0x00000080 | 
       |   |  | 
      | #define DNS_QUERY_WIRE_ONLY                 0x00000100 |   | #define DNS_QUERY_WIRE_ONLY                 0x00000100 | 
      | #define DNS_QUERY_RETURN_MESSAGE            0x00000200 |   | #define DNS_QUERY_RETURN_MESSAGE            0x00000200 | 
       |   |  | 
       | 
       |   | #define DNS_QUERY_MULTICAST_ONLY            0x00000400 | 
       |   | #define DNS_QUERY_NO_MULTICAST              0x00000800 | 
       |   |                                                                                  | 
      | #define DNS_QUERY_TREAT_AS_FQDN             0x00001000 |   | #define DNS_QUERY_TREAT_AS_FQDN             0x00001000 | 
      | #define DNS_QUERY_DONT_RESET_TTL_VALUES     0x00100000 |   | #define DNS_QUERY_DONT_RESET_TTL_VALUES     0x00100000 | 
      | #define DNS_QUERY_RESERVED                  0xff000000 |   | #define DNS_QUERY_RESERVED                  0xff000000 | 
       |   |  | 
      | //  Backward compatibility with Win2K |   | //  Backward compatibility with Win2K | 
      | //  Do not use |   | //  Do not use | 
       |   |  | 
      | #define DNS_QUERY_CACHE_ONLY                DNS_QUERY_NO_WIRE_QUERY |   | #define DNS_QUERY_CACHE_ONLY                DNS_QUERY_NO_WIRE_QUERY | 
       |   |  | 
      | DNS_STATUS |   | DNS_STATUS | 
      | WINAPI |   | WINAPI | 
      | DnsQuery_A( |   | DnsQuery_A( | 
       | 
      |     IN      PCSTR           pszName, |   |     __in                PCSTR           pszName, | 
      |     IN      WORD            wType, |   |     __in                WORD            wType, | 
      |     IN      DWORD           Options, |   |     __in                DWORD           Options, | 
      |     IN      PIP4_ARRAY      aipServers            OPTIONAL, |   |     __inout_opt         PVOID           pExtra, | 
      |     IN OUT  PDNS_RECORD *   ppQueryResults        OPTIONAL, |   |     __deref_out_opt     PDNS_RECORD *   ppQueryResults, | 
      |     IN OUT  PVOID *         pReserved             OPTIONAL |   |     __deref_opt_out_opt PVOID *         pReserved | 
      |     ); |   |     ); | 
       |   |  | 
      | DNS_STATUS |   | DNS_STATUS | 
      | WINAPI |   | WINAPI | 
      | DnsQuery_UTF8( |   | DnsQuery_UTF8( | 
       | 
      |     IN      PCSTR           pszName, |   |     __in                PCSTR           pszName, | 
      |     IN      WORD            wType, |   |     __in                WORD            wType, | 
      |     IN      DWORD           Options, |   |     __in                DWORD           Options, | 
      |     IN      PIP4_ARRAY      aipServers            OPTIONAL, |   |     __inout_opt         PVOID           pExtra, | 
      |     IN OUT  PDNS_RECORD *   ppQueryResults        OPTIONAL, |   |     __deref_out_opt     PDNS_RECORD *   ppQueryResults, | 
      |     IN OUT  PVOID *         pReserved             OPTIONAL |   |     __deref_opt_out_opt PVOID *         pReserved | 
      |     ); |   |     ); | 
       |   |  | 
      | DNS_STATUS |   | DNS_STATUS | 
      | WINAPI |   | WINAPI | 
      | DnsQuery_W( |   | DnsQuery_W( | 
       | 
      |     IN      PCWSTR          pszName, |   |     __in                PCWSTR          pszName, | 
      |     IN      WORD            wType, |   |     __in                WORD            wType, | 
      |     IN      DWORD           Options, |   |     __in                DWORD           Options, | 
      |     IN      PIP4_ARRAY      aipServers            OPTIONAL, |   |     __inout_opt         PVOID           pExtra, | 
      |     IN OUT  PDNS_RECORD *   ppQueryResults        OPTIONAL, |   |     __deref_out_opt     PDNS_RECORD *   ppQueryResults, | 
      |     IN OUT  PVOID *         pReserved             OPTIONAL |   |     __deref_opt_out_opt PVOID *         pReserved | 
      |     ); |   |     ); | 
       |   |  | 
      | #ifdef UNICODE |   | #ifdef UNICODE | 
      | #define DnsQuery DnsQuery_W |   | #define DnsQuery DnsQuery_W | 
      | #else |   | #else | 
      | #define DnsQuery DnsQuery_A |   | #define DnsQuery DnsQuery_A | 
      | #endif |   | #endif | 
      | // |   | // | 
      | //  DNS Update API |   | //  DNS Update API | 
      | // |   | // | 
       |   |  | 
      | skipping to change at line 1636 |   | skipping to change at line 1692 | 
      | //  PSEC_WINNT_AUTH_IDENTITY_W or PSEC_WINNT_AUTH_IDENTITY_A. |   | //  PSEC_WINNT_AUTH_IDENTITY_W or PSEC_WINNT_AUTH_IDENTITY_A. | 
      | //  Using PVOID to obviate the need for including rpcdce.h |   | //  Using PVOID to obviate the need for including rpcdce.h | 
      | //  in order to include this file and to leave open the |   | //  in order to include this file and to leave open the | 
      | //  possibility of alternative credential specifications in |   | //  possibility of alternative credential specifications in | 
      | //  the future. |   | //  the future. | 
      | // |   | // | 
       |   |  | 
      | DNS_STATUS |   | DNS_STATUS | 
      | WINAPI |   | WINAPI | 
      | DnsAcquireContextHandle_W( |   | DnsAcquireContextHandle_W( | 
       | 
      |     IN      DWORD           CredentialFlags, |   |     __in            DWORD           CredentialFlags, | 
      |     IN      PVOID           pCredentials,       OPTIONAL |   |     __in_opt        PVOID           Credentials, | 
      |     //IN      PSEC_WINNT_AUTH_IDENTITY_W  pCredentials, |   |     __deref_out     PHANDLE         pContext | 
      |     OUT     PHANDLE         pContextHandle |   |  | 
      |     ); |   |     ); | 
       |   |  | 
      | DNS_STATUS |   | DNS_STATUS | 
      | WINAPI |   | WINAPI | 
      | DnsAcquireContextHandle_A( |   | DnsAcquireContextHandle_A( | 
       | 
      |     IN      DWORD           CredentialFlags, |   |     __in            DWORD           CredentialFlags, | 
      |     IN      PVOID           pCredentials,       OPTIONAL |   |     __in_opt        PVOID           Credentials, | 
      |     //IN      PSEC_WINNT_AUTH_IDENTITY_A  pCredentials, |   |     __deref_out     PHANDLE         pContext | 
      |     OUT     PHANDLE         pContextHandle |   |  | 
      |     ); |   |     ); | 
       |   |  | 
      | #ifdef UNICODE |   | #ifdef UNICODE | 
      | #define DnsAcquireContextHandle DnsAcquireContextHandle_W |   | #define DnsAcquireContextHandle DnsAcquireContextHandle_W | 
      | #else |   | #else | 
      | #define DnsAcquireContextHandle DnsAcquireContextHandle_A |   | #define DnsAcquireContextHandle DnsAcquireContextHandle_A | 
      | #endif |   | #endif | 
       |   |  | 
      | VOID |   | VOID | 
      | WINAPI |   | WINAPI | 
      | DnsReleaseContextHandle( |   | DnsReleaseContextHandle( | 
       | 
      |     IN      HANDLE          hContext |   |     __in        HANDLE          hContext | 
      |     ); |   |     ); | 
       |   |  | 
      | // |   | // | 
      | //  Dynamic Update API |   | //  Dynamic Update API | 
      | // |   | // | 
       |   |  | 
      | DNS_STATUS |   | DNS_STATUS | 
      | WINAPI |   | WINAPI | 
      | DnsModifyRecordsInSet_W( |   | DnsModifyRecordsInSet_W( | 
       | 
      |     IN      PDNS_RECORD     pAddRecords, |   |     __in_opt        PDNS_RECORD     pAddRecords, | 
      |     IN      PDNS_RECORD     pDeleteRecords, |   |     __in_opt        PDNS_RECORD     pDeleteRecords, | 
      |     IN      DWORD           Options, |   |     __in            DWORD           Options, | 
      |     IN      HANDLE          hContext,       OPTIONAL |   |     __in_opt        HANDLE          hCredentials, | 
      |     IN      PIP4_ARRAY      pServerList,    OPTIONAL |   |     __inout_opt     PVOID           pExtraList, | 
      |     IN      PVOID           pReserved |   |     __inout_opt     PVOID           pReserved | 
      |     ); |   |     ); | 
       |   |  | 
      | DNS_STATUS |   | DNS_STATUS | 
      | WINAPI |   | WINAPI | 
      | DnsModifyRecordsInSet_A( |   | DnsModifyRecordsInSet_A( | 
       | 
      |     IN      PDNS_RECORD     pAddRecords, |   |     __in_opt        PDNS_RECORD     pAddRecords, | 
      |     IN      PDNS_RECORD     pDeleteRecords, |   |     __in_opt        PDNS_RECORD     pDeleteRecords, | 
      |     IN      DWORD           Options, |   |     __in            DWORD           Options, | 
      |     IN      HANDLE          hContext,       OPTIONAL |   |     __in_opt        HANDLE          hCredentials, | 
      |     IN      PIP4_ARRAY      pServerList,    OPTIONAL |   |     __inout_opt     PVOID           pExtraList, | 
      |     IN      PVOID           pReserved |   |     __inout_opt     PVOID           pReserved | 
      |     ); |   |     ); | 
       |   |  | 
      | DNS_STATUS |   | DNS_STATUS | 
      | WINAPI |   | WINAPI | 
      | DnsModifyRecordsInSet_UTF8( |   | DnsModifyRecordsInSet_UTF8( | 
       | 
      |     IN      PDNS_RECORD     pAddRecords, |   |     __in_opt        PDNS_RECORD     pAddRecords, | 
      |     IN      PDNS_RECORD     pDeleteRecords, |   |     __in_opt        PDNS_RECORD     pDeleteRecords, | 
      |     IN      DWORD           Options, |   |     __in            DWORD           Options, | 
      |     IN      HANDLE          hContext,       OPTIONAL |   |     __in_opt        HANDLE          hCredentials, | 
      |     IN      PIP4_ARRAY      pServerList,    OPTIONAL |   |     __inout_opt     PVOID           pExtraList, | 
      |     IN      PVOID           pReserved |   |     __inout_opt     PVOID           pReserved | 
      |     ); |   |     ); | 
       |   |  | 
      | #ifdef UNICODE |   | #ifdef UNICODE | 
      | #define DnsModifyRecordsInSet  DnsModifyRecordsInSet_W |   | #define DnsModifyRecordsInSet  DnsModifyRecordsInSet_W | 
      | #else |   | #else | 
      | #define DnsModifyRecordsInSet  DnsModifyRecordsInSet_A |   | #define DnsModifyRecordsInSet  DnsModifyRecordsInSet_A | 
      | #endif |   | #endif | 
       |   |  | 
      | DNS_STATUS |   | DNS_STATUS | 
      | WINAPI |   | WINAPI | 
      | DnsReplaceRecordSetW( |   | DnsReplaceRecordSetW( | 
       | 
      |     IN      PDNS_RECORD     pNewSet, |   |     __in            PDNS_RECORD     pReplaceSet, | 
      |     IN      DWORD           Options, |   |     __in            DWORD           Options, | 
      |     IN      HANDLE          hContext,       OPTIONAL |   |     __in_opt        HANDLE          hContext, | 
      |     IN      PIP4_ARRAY      pServerList,    OPTIONAL |   |     __inout_opt     PVOID           pExtraInfo, | 
      |     IN      PVOID           pReserved |   |     __inout_opt     PVOID           pReserved | 
      |     ); |   |     ); | 
       |   |  | 
      | DNS_STATUS |   | DNS_STATUS | 
      | WINAPI |   | WINAPI | 
      | DnsReplaceRecordSetA( |   | DnsReplaceRecordSetA( | 
       | 
      |     IN      PDNS_RECORD     pNewSet, |   |     __in            PDNS_RECORD     pReplaceSet, | 
      |     IN      DWORD           Options, |   |     __in            DWORD           Options, | 
      |     IN      HANDLE          hContext,       OPTIONAL |   |     __in_opt        HANDLE          hContext, | 
      |     IN      PIP4_ARRAY      pServerList,    OPTIONAL |   |     __inout_opt     PVOID           pExtraInfo, | 
      |     IN      PVOID           pReserved |   |     __inout_opt     PVOID           pReserved | 
      |     ); |   |     ); | 
       |   |  | 
      | DNS_STATUS |   | DNS_STATUS | 
      | WINAPI |   | WINAPI | 
      | DnsReplaceRecordSetUTF8( |   | DnsReplaceRecordSetUTF8( | 
       | 
      |     IN      PDNS_RECORD     pNewSet, |   |     __in            PDNS_RECORD     pReplaceSet, | 
      |     IN      DWORD           Options, |   |     __in            DWORD           Options, | 
      |     IN      HANDLE          hContext,       OPTIONAL |   |     __in_opt        HANDLE          hContext, | 
      |     IN      PIP4_ARRAY      pServerList,    OPTIONAL |   |     __inout_opt     PVOID           pExtraInfo, | 
      |     IN      PVOID           pReserved |   |     __inout_opt     PVOID           pReserved | 
      |     ); |   |     ); | 
       |   |  | 
      | #ifdef UNICODE |   | #ifdef UNICODE | 
      | #define DnsReplaceRecordSet  DnsReplaceRecordSetW |   | #define DnsReplaceRecordSet  DnsReplaceRecordSetW | 
      | #else |   | #else | 
      | #define DnsReplaceRecordSet  DnsReplaceRecordSetA |   | #define DnsReplaceRecordSet  DnsReplaceRecordSetA | 
      | #endif |   | #endif | 
      | // |   | // | 
      | //  DNS name validation |   | //  DNS name validation | 
      | // |   | // | 
       |   |  | 
      | skipping to change at line 1757 |   | skipping to change at line 1811 | 
      |     DnsNameDomain, |   |     DnsNameDomain, | 
      |     DnsNameDomainLabel, |   |     DnsNameDomainLabel, | 
      |     DnsNameHostnameFull, |   |     DnsNameHostnameFull, | 
      |     DnsNameHostnameLabel, |   |     DnsNameHostnameLabel, | 
      |     DnsNameWildcard, |   |     DnsNameWildcard, | 
      |     DnsNameSrvRecord |   |     DnsNameSrvRecord | 
      | } |   | } | 
      | DNS_NAME_FORMAT; |   | DNS_NAME_FORMAT; | 
       |   |  | 
      | DNS_STATUS |   | DNS_STATUS | 
       | 
      | DnsValidateName_UTF8( |   | DnsValidateName_W( | 
      |     IN      LPCSTR          pszName, |   |     __in    PCWSTR          pszName, | 
      |     IN      DNS_NAME_FORMAT Format |   |     __in    DNS_NAME_FORMAT Format | 
      |     ); |   |     ); | 
       |   |  | 
      | DNS_STATUS |   | DNS_STATUS | 
       | 
      | DnsValidateName_W( |   | DnsValidateName_A( | 
      |     IN      LPCWSTR         pwszName, |   |     __in    PCSTR           pszName, | 
      |     IN      DNS_NAME_FORMAT Format |   |     __in    DNS_NAME_FORMAT Format | 
      |     ); |   |     ); | 
       |   |  | 
      | DNS_STATUS |   | DNS_STATUS | 
       | 
      | DnsValidateName_A( |   | DnsValidateName_UTF8( | 
      |     IN      LPCSTR          pszName, |   |     __in    PCSTR           pszName, | 
      |     IN      DNS_NAME_FORMAT Format |   |     __in    DNS_NAME_FORMAT Format | 
      |     ); |   |     ); | 
       |   |  | 
      | #ifdef UNICODE |   | #ifdef UNICODE | 
      | #define DnsValidateName(p,f)    DnsValidateName_W( (p), (f) ) |   | #define DnsValidateName(p,f)    DnsValidateName_W( (p), (f) ) | 
      | #else |   | #else | 
      | #define DnsValidateName(p,f)    DnsValidateName_A( (p), (f) ) |   | #define DnsValidateName(p,f)    DnsValidateName_A( (p), (f) ) | 
      | #endif |   | #endif | 
       |   |  | 
      | // |   | // | 
      | //  DNS name comparison |   | //  DNS name comparison | 
      | // |   | // | 
       |   |  | 
      | BOOL |   | BOOL | 
      | WINAPI |   | WINAPI | 
      | DnsNameCompare_A( |   | DnsNameCompare_A( | 
       | 
      |     IN      LPSTR           pName1, |   |     __in    PCSTR           pName1, | 
      |     IN      LPSTR           pName2 |   |     __in    PCSTR           pName2 | 
      |     ); |   |     ); | 
       |   |  | 
      | BOOL |   | BOOL | 
      | WINAPI |   | WINAPI | 
      | DnsNameCompare_W( |   | DnsNameCompare_W( | 
       | 
      |     IN      LPWSTR          pName1, |   |     __in    PCWSTR          pName1, | 
      |     IN      LPWSTR          pName2 |   |     __in    PCWSTR          pName2 | 
      |     ); |   |     ); | 
       |   |  | 
      | #ifdef UNICODE |   | #ifdef UNICODE | 
      | #define DnsNameCompare(n1,n2)   DnsNameCompare_W( (n1),(n2) ) |   | #define DnsNameCompare(n1,n2)   DnsNameCompare_W( (n1),(n2) ) | 
      | #else |   | #else | 
      | #define DnsNameCompare(n1,n2)   DnsNameCompare_A( (n1),(n2) ) |   | #define DnsNameCompare(n1,n2)   DnsNameCompare_A( (n1),(n2) ) | 
      | #endif |   | #endif | 
       |   |  | 
      | // |   | // | 
      | //  DNS message "roll-your-own" routines |   | //  DNS message "roll-your-own" routines | 
       |   |  | 
      | skipping to change at line 1818 |   | skipping to change at line 1872 | 
      | typedef struct _DNS_MESSAGE_BUFFER |   | typedef struct _DNS_MESSAGE_BUFFER | 
      | { |   | { | 
      |     DNS_HEADER  MessageHead; |   |     DNS_HEADER  MessageHead; | 
      |     CHAR        MessageBody[1]; |   |     CHAR        MessageBody[1]; | 
      | } |   | } | 
      | DNS_MESSAGE_BUFFER, *PDNS_MESSAGE_BUFFER; |   | DNS_MESSAGE_BUFFER, *PDNS_MESSAGE_BUFFER; | 
       |   |  | 
      | BOOL |   | BOOL | 
      | WINAPI |   | WINAPI | 
      | DnsWriteQuestionToBuffer_W( |   | DnsWriteQuestionToBuffer_W( | 
       | 
      |     IN OUT  PDNS_MESSAGE_BUFFER pDnsBuffer, |   |     __inout     PDNS_MESSAGE_BUFFER pDnsBuffer, | 
      |     IN OUT  PDWORD              pdwBufferSize, |   |     __inout     PDWORD              pdwBufferSize, | 
      |     IN      LPWSTR              pszName, |   |     __in        PCWSTR              pszName, | 
      |     IN      WORD                wType, |   |     __in        WORD                wType, | 
      |     IN      WORD                Xid, |   |     __in        WORD                Xid, | 
      |     IN      BOOL                fRecursionDesired |   |     __in        BOOL                fRecursionDesired | 
      |     ); |   |     ); | 
       |   |  | 
       | 
      | BOOL WINAPI |   | BOOL | 
       |   | WINAPI | 
      | DnsWriteQuestionToBuffer_UTF8( |   | DnsWriteQuestionToBuffer_UTF8( | 
       | 
      |     IN OUT  PDNS_MESSAGE_BUFFER pDnsBuffer, |   |     __inout     PDNS_MESSAGE_BUFFER pDnsBuffer, | 
      |     IN OUT  LPDWORD             pdwBufferSize, |   |     __inout     PDWORD              pdwBufferSize, | 
      |     IN      LPSTR               pszName, |   |     __in        PCSTR               pszName, | 
      |     IN      WORD                wType, |   |     __in        WORD                wType, | 
      |     IN      WORD                Xid, |   |     __in        WORD                Xid, | 
      |     IN      BOOL                fRecursionDesired |   |     __in        BOOL                fRecursionDesired | 
      |     ); |   |     ); | 
       |   |  | 
      | DNS_STATUS |   | DNS_STATUS | 
      | WINAPI |   | WINAPI | 
      | DnsExtractRecordsFromMessage_W( |   | DnsExtractRecordsFromMessage_W( | 
       | 
      |     IN      PDNS_MESSAGE_BUFFER pDnsBuffer, |   |     __in            PDNS_MESSAGE_BUFFER pDnsBuffer, | 
      |     IN      WORD                wMessageLength, |   |     __in            WORD                wMessageLength, | 
      |     OUT     PDNS_RECORD *       ppRecord |   |     __deref_out     PDNS_RECORD *       ppRecord | 
      |     ); |   |     ); | 
       |   |  | 
      | DNS_STATUS |   | DNS_STATUS | 
      | WINAPI |   | WINAPI | 
      | DnsExtractRecordsFromMessage_UTF8( |   | DnsExtractRecordsFromMessage_UTF8( | 
       | 
      |     IN      PDNS_MESSAGE_BUFFER pDnsBuffer, |   |     __in            PDNS_MESSAGE_BUFFER pDnsBuffer, | 
      |     IN      WORD                wMessageLength, |   |     __in            WORD                wMessageLength, | 
      |     OUT     PDNS_RECORD *       ppRecord |   |     __deref_out     PDNS_RECORD *       ppRecord | 
      |     ); |   |     ); | 
       |   |  | 
      | #ifdef __cplusplus |   | #ifdef __cplusplus | 
      | } |   | } | 
      | #endif  // __cplusplus |   | #endif  // __cplusplus | 
       |   |  | 
      | #endif // _WINDNS_INCLUDED_ |   | #endif // _WINDNS_INCLUDED_ | 
      |   |  | 
     |  End of changes. 60 change blocks.  | 
     | 148 lines changed or deleted |   | 202 lines changed or added | 
      |