Headers diff for dnsapi.dll between 6.1.7601.17570-Windows_7.0 and 6.3.9600.17415-Windows_8.1 versions



 windns.h (6.1.7601.17570-Windows_7.0)   windns.h (6.3.9600.17415-Windows_8.1) 
skipping to change at line 25 skipping to change at line 25
Author: Author:
Jim Gilroy (jamesg) December 7, 1996 Jim Gilroy (jamesg) December 7, 1996
Revision History: Revision History:
--*/ --*/
#ifndef _WINDNS_INCLUDED_ #ifndef _WINDNS_INCLUDED_
#define _WINDNS_INCLUDED_ #define _WINDNS_INCLUDED_
#include <winapifamily.h>
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
#ifdef __cplusplus #ifdef __cplusplus
extern "C" extern "C"
{ {
#endif // __cplusplus #endif // __cplusplus
// //
// Define QWORD -- not yet defined globally // Define QWORD -- not yet defined globally
// //
typedef unsigned __int64 QWORD, *PQWORD; typedef unsigned __int64 QWORD, *PQWORD;
// //
// DNS public types // DNS public types
// //
typedef __success(return == 0) LONG DNS_STATUS; typedef _Return_type_success_(return == 0) LONG DNS_STATUS;
typedef DNS_STATUS *PDNS_STATUS; typedef 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 (16) #define IP4_ADDRESS_STRING_LENGTH (16)
skipping to change at line 111 skipping to change at line 115
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 // MIDL_PASS #endif // MIDL_PASS
// //
// DNS Address structures representing both IPv4 and IPv6 addresses.
//
#define DNS_ADDR_MAX_SOCKADDR_LENGTH (32)
#pragma pack(push, 1)
#if defined( MIDL_PASS )
typedef struct _DnsAddr
{
CHAR MaxSa[ DNS_ADDR_MAX_SOCKADDR_LENGTH ];
DWORD DnsAddrUserDword[ 8 ];
}
DNS_ADDR, *PDNS_ADDR;
typedef struct _DnsAddrArray
{
DWORD MaxCount;
DWORD AddrCount;
DWORD Tag;
WORD Family;
WORD WordReserved;
DWORD Flags;
DWORD MatchFlag;
DWORD Reserved1;
DWORD Reserved2;
[size_is( AddrCount )] DNS_ADDR AddrArray[];
}
DNS_ADDR_ARRAY, *PDNS_ADDR_ARRAY;
#elif !defined( USE_PRIVATE_DNS_ADDR )
typedef struct _DnsAddr
{
CHAR MaxSa[ DNS_ADDR_MAX_SOCKADDR_LENGTH ];
union
{
DWORD DnsAddrUserDword[ 8 ];
}
Data;
}
DNS_ADDR, *PDNS_ADDR;
typedef struct _DnsAddrArray
{
DWORD MaxCount;
DWORD AddrCount;
DWORD Tag;
WORD Family;
WORD WordReserved;
DWORD Flags;
DWORD MatchFlag;
DWORD Reserved1;
DWORD Reserved2;
DNS_ADDR AddrArray[ 1 ];
}
DNS_ADDR_ARRAY, *PDNS_ADDR_ARRAY;
#endif // MIDL_PASS
#pragma pack(pop)
//
// 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 // but include
// - 11 bytes for scope ID // - 11 bytes for scope ID
// - 6 bytes for port (inc. colon) // - 6 bytes for port (inc. colon)
// - two bytes to bracket address with port // - two bytes to bracket address with port
// - terminating NULL // - terminating NULL
// //
// Note: this is a change to previous def, but a single // Note: this is a change to previous def, but a single
skipping to change at line 536 skipping to change at line 602
// RFC 4034 (DNSSEC NSEC) // RFC 4034 (DNSSEC NSEC)
#define DNS_TYPE_NSEC 0x002f // 47 #define DNS_TYPE_NSEC 0x002f // 47
// RFC 4034 (DNSSEC DNSKEY) // RFC 4034 (DNSSEC DNSKEY)
#define DNS_TYPE_DNSKEY 0x0030 // 48 #define DNS_TYPE_DNSKEY 0x0030 // 48
// RFC 4701 (DHCID) // RFC 4701 (DHCID)
#define DNS_TYPE_DHCID 0x0031 // 49 #define DNS_TYPE_DHCID 0x0031 // 49
// RFC 5155 (DNSSEC NSEC3)
#define DNS_TYPE_NSEC3 0x0032 // 50
// RFC 5155 (DNSSEC NSEC3PARAM)
#define DNS_TYPE_NSEC3PARAM 0x0033 // 51
// //
// IANA Reserved // IANA Reserved
// //
#define DNS_TYPE_UINFO 0x0064 // 100 #define DNS_TYPE_UINFO 0x0064 // 100
#define DNS_TYPE_UID 0x0065 // 101 #define DNS_TYPE_UID 0x0065 // 101
#define DNS_TYPE_GID 0x0066 // 102 #define DNS_TYPE_GID 0x0066 // 102
#define DNS_TYPE_UNSPEC 0x0067 // 103 #define DNS_TYPE_UNSPEC 0x0067 // 103
// //
skipping to change at line 565 skipping to change at line 637
#define DNS_TYPE_TKEY 0x00f9 // 249 #define DNS_TYPE_TKEY 0x00f9 // 249
#define DNS_TYPE_TSIG 0x00fa // 250 #define DNS_TYPE_TSIG 0x00fa // 250
#define DNS_TYPE_IXFR 0x00fb // 251 #define DNS_TYPE_IXFR 0x00fb // 251
#define DNS_TYPE_AXFR 0x00fc // 252 #define DNS_TYPE_AXFR 0x00fc // 252
#define DNS_TYPE_MAILB 0x00fd // 253 #define DNS_TYPE_MAILB 0x00fd // 253
#define DNS_TYPE_MAILA 0x00fe // 254 #define DNS_TYPE_MAILA 0x00fe // 254
#define DNS_TYPE_ALL 0x00ff // 255 #define DNS_TYPE_ALL 0x00ff // 255
#define DNS_TYPE_ANY 0x00ff // 255 #define DNS_TYPE_ANY 0x00ff // 255
// //
// Temp Microsoft types -- use until get IANA approval for real type // Private use Microsoft types -- See www.iana.org/assignments/dns-parameters
// //
#define DNS_TYPE_WINS 0xff01 // 64K - 255 #define DNS_TYPE_WINS 0xff01 // 64K - 255
#define DNS_TYPE_WINSR 0xff02 // 64K - 254 #define DNS_TYPE_WINSR 0xff02 // 64K - 254
#define DNS_TYPE_NBSTAT (DNS_TYPE_WINSR) #define DNS_TYPE_NBSTAT (DNS_TYPE_WINSR)
// //
// DNS Record Types -- Net Byte Order // DNS Record Types -- Net Byte Order
// //
#define DNS_RTYPE_A 0x0100 // 1 #define DNS_RTYPE_A 0x0100 // 1
#define DNS_RTYPE_NS 0x0200 // 2 #define DNS_RTYPE_NS 0x0200 // 2
#define DNS_RTYPE_MD 0x0300 // 3 #define DNS_RTYPE_MD 0x0300 // 3
#define DNS_RTYPE_MF 0x0400 // 4 #define DNS_RTYPE_MF 0x0400 // 4
#define DNS_RTYPE_CNAME 0x0500 // 5 #define DNS_RTYPE_CNAME 0x0500 // 5
#define DNS_RTYPE_SOA 0x0600 // 6 #define DNS_RTYPE_SOA 0x0600 // 6
#define DNS_RTYPE_MB 0x0700 // 7 #define DNS_RTYPE_MB 0x0700 // 7
#define DNS_RTYPE_MG 0x0800 // 8 #define DNS_RTYPE_MG 0x0800 // 8
#define DNS_RTYPE_MR 0x0900 // 9 #define DNS_RTYPE_MR 0x0900 // 9
#define DNS_RTYPE_NULL 0x0a00 // 10 #define DNS_RTYPE_NULL 0x0a00 // 10
#define DNS_RTYPE_WKS 0x0b00 // 11 #define DNS_RTYPE_WKS 0x0b00 // 11
#define DNS_RTYPE_PTR 0x0c00 // 12 #define DNS_RTYPE_PTR 0x0c00 // 12
#define DNS_RTYPE_HINFO 0x0d00 // 13 #define DNS_RTYPE_HINFO 0x0d00 // 13
#define DNS_RTYPE_MINFO 0x0e00 // 14 #define DNS_RTYPE_MINFO 0x0e00 // 14
#define DNS_RTYPE_MX 0x0f00 // 15 #define DNS_RTYPE_MX 0x0f00 // 15
#define DNS_RTYPE_TEXT 0x1000 // 16 #define DNS_RTYPE_TEXT 0x1000 // 16
#define DNS_RTYPE_RP 0x1100 // 17 #define DNS_RTYPE_RP 0x1100 // 17
#define DNS_RTYPE_AFSDB 0x1200 // 18 #define DNS_RTYPE_AFSDB 0x1200 // 18
#define DNS_RTYPE_X25 0x1300 // 19 #define DNS_RTYPE_X25 0x1300 // 19
#define DNS_RTYPE_ISDN 0x1400 // 20 #define DNS_RTYPE_ISDN 0x1400 // 20
#define DNS_RTYPE_RT 0x1500 // 21 #define DNS_RTYPE_RT 0x1500 // 21
#define DNS_RTYPE_NSAP 0x1600 // 22 #define DNS_RTYPE_NSAP 0x1600 // 22
#define DNS_RTYPE_NSAPPTR 0x1700 // 23 #define DNS_RTYPE_NSAPPTR 0x1700 // 23
#define DNS_RTYPE_SIG 0x1800 // 24 #define DNS_RTYPE_SIG 0x1800 // 24
#define DNS_RTYPE_KEY 0x1900 // 25 #define DNS_RTYPE_KEY 0x1900 // 25
#define DNS_RTYPE_PX 0x1a00 // 26 #define DNS_RTYPE_PX 0x1a00 // 26
#define DNS_RTYPE_GPOS 0x1b00 // 27 #define DNS_RTYPE_GPOS 0x1b00 // 27
#define DNS_RTYPE_AAAA 0x1c00 // 28 #define DNS_RTYPE_AAAA 0x1c00 // 28
#define DNS_RTYPE_LOC 0x1d00 // 29 #define DNS_RTYPE_LOC 0x1d00 // 29
#define DNS_RTYPE_NXT 0x1e00 // 30 #define DNS_RTYPE_NXT 0x1e00 // 30
#define DNS_RTYPE_EID 0x1f00 // 31 #define DNS_RTYPE_EID 0x1f00 // 31
#define DNS_RTYPE_NIMLOC 0x2000 // 32 #define DNS_RTYPE_NIMLOC 0x2000 // 32
#define DNS_RTYPE_SRV 0x2100 // 33 #define DNS_RTYPE_SRV 0x2100 // 33
#define DNS_RTYPE_ATMA 0x2200 // 34 #define DNS_RTYPE_ATMA 0x2200 // 34
#define DNS_RTYPE_NAPTR 0x2300 // 35 #define DNS_RTYPE_NAPTR 0x2300 // 35
#define DNS_RTYPE_KX 0x2400 // 36 #define DNS_RTYPE_KX 0x2400 // 36
#define DNS_RTYPE_CERT 0x2500 // 37 #define DNS_RTYPE_CERT 0x2500 // 37
#define DNS_RTYPE_A6 0x2600 // 38 #define DNS_RTYPE_A6 0x2600 // 38
#define DNS_RTYPE_DNAME 0x2700 // 39 #define DNS_RTYPE_DNAME 0x2700 // 39
#define DNS_RTYPE_SINK 0x2800 // 40 #define DNS_RTYPE_SINK 0x2800 // 40
#define DNS_RTYPE_OPT 0x2900 // 41 #define DNS_RTYPE_OPT 0x2900 // 41
#define DNS_RTYPE_DS 0x2b00 // 43 #define DNS_RTYPE_DS 0x2b00 // 43
#define DNS_RTYPE_RRSIG 0x2e00 // 46 #define DNS_RTYPE_RRSIG 0x2e00 // 46
#define DNS_RTYPE_NSEC 0x2f00 // 47 #define DNS_RTYPE_NSEC 0x2f00 // 47
#define DNS_RTYPE_DNSKEY 0x3000 // 48 #define DNS_RTYPE_DNSKEY 0x3000 // 48
#define DNS_RTYPE_DHCID 0x3100 // 49 #define DNS_RTYPE_DHCID 0x3100 // 49
#define DNS_RTYPE_NSEC3 0x3200 // 50
#define DNS_RTYPE_NSEC3PARAM 0x3300 // 51
// //
// IANA Reserved // IANA Reserved
// //
#define DNS_RTYPE_UINFO 0x6400 // 100 #define DNS_RTYPE_UINFO 0x6400 // 100
#define DNS_RTYPE_UID 0x6500 // 101 #define DNS_RTYPE_UID 0x6500 // 101
#define DNS_RTYPE_GID 0x6600 // 102 #define DNS_RTYPE_GID 0x6600 // 102
#define DNS_RTYPE_UNSPEC 0x6700 // 103 #define DNS_RTYPE_UNSPEC 0x6700 // 103
// //
// Query only types // Query only types
// //
#define DNS_RTYPE_TKEY 0xf900 // 249 #define DNS_RTYPE_TKEY 0xf900 // 249
#define DNS_RTYPE_TSIG 0xfa00 // 250 #define DNS_RTYPE_TSIG 0xfa00 // 250
#define DNS_RTYPE_IXFR 0xfb00 // 251 #define DNS_RTYPE_IXFR 0xfb00 // 251
#define DNS_RTYPE_AXFR 0xfc00 // 252 #define DNS_RTYPE_AXFR 0xfc00 // 252
#define DNS_RTYPE_MAILB 0xfd00 // 253 #define DNS_RTYPE_MAILB 0xfd00 // 253
#define DNS_RTYPE_MAILA 0xfe00 // 254 #define DNS_RTYPE_MAILA 0xfe00 // 254
#define DNS_RTYPE_ALL 0xff00 // 255 #define DNS_RTYPE_ALL 0xff00 // 255
#define DNS_RTYPE_ANY 0xff00 // 255 #define DNS_RTYPE_ANY 0xff00 // 255
// //
// Temp Microsoft types -- use until get IANA approval for real type // Private use Microsoft types -- See www.iana.org/assignments/dns-parameters
// //
#define DNS_RTYPE_WINS 0x01ff // 64K - 255 #define DNS_RTYPE_WINS 0x01ff // 64K - 255
#define DNS_RTYPE_WINSR 0x02ff // 64K - 254 #define DNS_RTYPE_WINSR 0x02ff // 64K - 254
// //
// Record type specific definitions // Record type specific definitions
// //
// //
// ATMA (ATM address type) formats // ATMA (ATM address type) formats
// //
// Define these directly for any environment (ex NT4) // Define these directly for any environment (ex NT4)
// without winsock2 ATM support (ws2atm.h) // without winsock2 ATM support (ws2atm.h)
// //
skipping to change at line 682 skipping to change at line 756
#define DNS_ATMA_AESA_ADDR_LENGTH (20) #define DNS_ATMA_AESA_ADDR_LENGTH (20)
#define DNS_ATMA_MAX_RECORD_LENGTH (DNS_ATMA_MAX_ADDR_LENGTH+1) #define DNS_ATMA_MAX_RECORD_LENGTH (DNS_ATMA_MAX_ADDR_LENGTH+1)
// //
// DNSSEC defs // DNSSEC defs
// //
// DNSSEC algorithms // DNSSEC algorithms
#define DNSSEC_ALGORITHM_RSAMD5 1 #define DNSSEC_ALGORITHM_RSAMD5 1
#define DNSSEC_ALGORITHM_RSASHA1 5 #define DNSSEC_ALGORITHM_RSASHA1 5
#define DNSSEC_ALGORITHM_NULL 253 #define DNSSEC_ALGORITHM_RSASHA1_NSEC3 7
#define DNSSEC_ALGORITHM_PRIVATE 254 #define DNSSEC_ALGORITHM_RSASHA256 8
#define DNSSEC_ALGORITHM_RSASHA512 10
#define DNSSEC_ALGORITHM_ECDSAP256_SHA256 13
#define DNSSEC_ALGORITHM_ECDSAP384_SHA384 14
#define DNSSEC_ALGORITHM_NULL 253
#define DNSSEC_ALGORITHM_PRIVATE 254
// DNSSEC DS record digest algorithms
#define DNSSEC_DIGEST_ALGORITHM_SHA1 1
#define DNSSEC_DIGEST_ALGORITHM_SHA256 2
#define DNSSEC_DIGEST_ALGORITHM_SHA384 4
// DNSSEC KEY protocol table // DNSSEC KEY protocol table
#define DNSSEC_PROTOCOL_NONE 0 #define DNSSEC_PROTOCOL_NONE 0
#define DNSSEC_PROTOCOL_TLS 1 #define DNSSEC_PROTOCOL_TLS 1
#define DNSSEC_PROTOCOL_EMAIL 2 #define DNSSEC_PROTOCOL_EMAIL 2
#define DNSSEC_PROTOCOL_DNSSEC 3 #define DNSSEC_PROTOCOL_DNSSEC 3
#define DNSSEC_PROTOCOL_IPSEC 4 #define DNSSEC_PROTOCOL_IPSEC 4
// DNSSEC KEY flag field // DNSSEC KEY flag field
skipping to change at line 818 skipping to change at line 903
// //
// DNS_CONFIG_FLAG_ALLOC -- Causes config info to be allocated. // DNS_CONFIG_FLAG_ALLOC -- Causes config info to be allocated.
// Free with LocalFree(). // Free with LocalFree().
// //
#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_opt PCWSTR pwsAdapterName, _In_opt_ PCWSTR pwsAdapterName
__in_opt PVOID pReserved, ,
__out_bcount_part(*pBufLen, *pBufLen) PVOID pBuffer, _In_opt_ PVOID pReserved,
__inout PDWORD pBufLen _Out_writes_bytes_to_opt_(*pBufLen, *pBufLen) PVOID pBuffer,
_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 963 skipping to change at line 1048
{ {
WORD wTypeCovered; WORD wTypeCovered;
BYTE chAlgorithm; BYTE chAlgorithm;
BYTE chLabelCount; BYTE chLabelCount;
DWORD dwOriginalTtl; DWORD dwOriginalTtl;
DWORD dwExpiration; DWORD dwExpiration;
DWORD dwTimeSigned; DWORD dwTimeSigned;
WORD wKeyTag; WORD wKeyTag;
WORD wSignatureLength; WORD wSignatureLength;
PWSTR pNameSigner; PWSTR pNameSigner;
#ifdef MIDL_PASS
[size_is(wSignatureLength)] BYTE Signature[];
#else
BYTE Signature[1]; BYTE Signature[1];
#endif
} }
DNS_SIG_DATAW, *PDNS_SIG_DATAW, DNS_RRSIG_DATAW, *PDNS_RRSIG_DATAW; DNS_SIG_DATAW, *PDNS_SIG_DATAW, DNS_RRSIG_DATAW, *PDNS_RRSIG_DATAW;
typedef struct typedef struct
{ {
WORD wTypeCovered; WORD wTypeCovered;
BYTE chAlgorithm; BYTE chAlgorithm;
BYTE chLabelCount; BYTE chLabelCount;
DWORD dwOriginalTtl; DWORD dwOriginalTtl;
DWORD dwExpiration; DWORD dwExpiration;
DWORD dwTimeSigned; DWORD dwTimeSigned;
WORD wKeyTag; WORD wKeyTag;
WORD wSignatureLength; WORD wSignatureLength;
PSTR pNameSigner; PSTR pNameSigner;
#ifdef MIDL_PASS
[size_is(wSignatureLength)] BYTE Signature[];
#else
BYTE Signature[1]; BYTE Signature[1];
#endif
} }
DNS_SIG_DATAA, *PDNS_SIG_DATAA, DNS_RRSIG_DATAA, *PDNS_RRSIG_DATAA; DNS_SIG_DATAA, *PDNS_SIG_DATAA, DNS_RRSIG_DATAA, *PDNS_RRSIG_DATAA;
typedef struct typedef struct
{ {
WORD wFlags; WORD wFlags;
BYTE chProtocol; BYTE chProtocol;
BYTE chAlgorithm; BYTE chAlgorithm;
WORD wKeyLength; WORD wKeyLength;
WORD wPad; // keep byte field aligned WORD wPad; // keep byte field aligned
#ifdef MIDL_PASS
[size_is(wKeyLength)] BYTE Key[];
#else
BYTE Key[1]; BYTE Key[1];
#endif
} }
DNS_KEY_DATA, *PDNS_KEY_DATA, DNS_DNSKEY_DATA, *PDNS_DNSKEY_DATA; DNS_KEY_DATA, *PDNS_KEY_DATA, DNS_DNSKEY_DATA, *PDNS_DNSKEY_DATA;
typedef struct typedef struct
{ {
DWORD dwByteCount; DWORD dwByteCount;
#ifdef MIDL_PASS #ifdef MIDL_PASS
[size_is(dwByteCount)] BYTE DHCID[]; [size_is(dwByteCount)] BYTE DHCID[];
#else #else
BYTE DHCID[1]; BYTE DHCID[1];
#endif #endif
} }
DNS_DHCID_DATA, *PDNS_DHCID_DATA; DNS_DHCID_DATA, *PDNS_DHCID_DATA;
typedef struct typedef struct
{ {
PWSTR pNextDomainName; PWSTR pNextDomainName;
WORD wTypeBitMapsLength; WORD wTypeBitMapsLength;
WORD wPad; // keep byte field aligned WORD wPad; // keep byte field aligned
#ifdef MIDL_PASS
[size_is(wTypeBitMapsLength)] BYTE TypeBitMaps[];
#else
BYTE TypeBitMaps[1]; BYTE TypeBitMaps[1];
#endif
} }
DNS_NSEC_DATAW, *PDNS_NSEC_DATAW; DNS_NSEC_DATAW, *PDNS_NSEC_DATAW;
typedef struct typedef struct
{ {
PSTR pNextDomainName; PSTR pNextDomainName;
WORD wTypeBitMapsLength; WORD wTypeBitMapsLength;
WORD wPad; // keep byte field aligned WORD wPad; // keep byte field aligned
#ifdef MIDL_PASS
[size_is(wTypeBitMapsLength)] BYTE TypeBitMaps[];
#else
BYTE TypeBitMaps[1]; BYTE TypeBitMaps[1];
#endif
} }
DNS_NSEC_DATAA, *PDNS_NSEC_DATAA; DNS_NSEC_DATAA, *PDNS_NSEC_DATAA;
typedef struct typedef struct
{ {
BYTE chAlgorithm;
BYTE bFlags;
WORD wIterations;
BYTE bSaltLength;
BYTE bHashLength;
WORD wTypeBitMapsLength;
#ifdef MIDL_PASS
[size_is(bSaltLength+bHashLength+wTypeBitMapsLength)] BYTE chData[];
#else
BYTE chData[1];
#endif
}
DNS_NSEC3_DATA, *PDNS_NSEC3_DATA;
typedef struct
{
BYTE chAlgorithm;
BYTE bFlags;
WORD wIterations;
BYTE bSaltLength;
BYTE bPad[3]; // keep salt field aligned
#ifdef MIDL_PASS
[size_is(bSaltLength)] BYTE pbSalt[];
#else
BYTE pbSalt[1];
#endif
}
DNS_NSEC3PARAM_DATA, *PDNS_NSEC3PARAM_DATA;
typedef struct
{
WORD wKeyTag; WORD wKeyTag;
BYTE chAlgorithm; BYTE chAlgorithm;
BYTE chDigestType; BYTE chDigestType;
WORD wDigestLength; WORD wDigestLength;
WORD wPad; // keep byte field aligned WORD wPad; // keep byte field aligned
#ifdef MIDL_PASS
[size_is(wDigestLength)] BYTE Digest[];
#else
BYTE Digest[1]; BYTE Digest[1];
#endif
} }
DNS_DS_DATA, *PDNS_DS_DATA; DNS_DS_DATA, *PDNS_DS_DATA;
typedef struct typedef struct
{ {
WORD wDataLength; WORD wDataLength;
WORD wPad; // keep byte field aligned WORD wPad; // keep byte field aligned
#ifdef MIDL_PASS
[size_is(wDataLength)] BYTE Data[];
#else
BYTE Data[1]; BYTE Data[1];
#endif
} }
DNS_OPT_DATA, *PDNS_OPT_DATA; DNS_OPT_DATA, *PDNS_OPT_DATA;
typedef struct typedef struct
{ {
WORD wVersion; WORD wVersion;
WORD wSize; WORD wSize;
WORD wHorPrec; WORD wHorPrec;
WORD wVerPrec; WORD wVerPrec;
DWORD dwLatitude; DWORD dwLatitude;
DWORD dwLongitude; DWORD dwLongitude;
DWORD dwAltitude; DWORD dwAltitude;
} }
DNS_LOC_DATA, *PDNS_LOC_DATA; DNS_LOC_DATA, *PDNS_LOC_DATA;
typedef struct typedef struct
{ {
PWSTR pNameNext; PWSTR pNameNext;
WORD wNumTypes; WORD wNumTypes;
#ifdef MIDL_PASS
[size_is(wNumTypes)] WORD wTypes[];
#else
WORD wTypes[1]; WORD wTypes[1];
#endif
} }
DNS_NXT_DATAW, *PDNS_NXT_DATAW; DNS_NXT_DATAW, *PDNS_NXT_DATAW;
typedef struct typedef struct
{ {
PSTR pNameNext; PSTR pNameNext;
WORD wNumTypes; WORD wNumTypes;
#ifdef MIDL_PASS
[size_is(wNumTypes)] WORD wTypes[];
#else
WORD wTypes[1]; WORD wTypes[1];
#endif
} }
DNS_NXT_DATAA, *PDNS_NXT_DATAA; DNS_NXT_DATAA, *PDNS_NXT_DATAA;
typedef struct typedef struct
{ {
PWSTR pNameTarget; PWSTR 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
skipping to change at line 1294 skipping to change at line 1446
#define DNS_DS_RECORD_LENGTH(ByteCount) \ #define DNS_DS_RECORD_LENGTH(ByteCount) \
(FIELD_OFFSET(DNS_DS_DATA, Digest) + (ByteCount)) (FIELD_OFFSET(DNS_DS_DATA, Digest) + (ByteCount))
#define DNS_OPT_RECORD_LENGTH(ByteCount) \ #define DNS_OPT_RECORD_LENGTH(ByteCount) \
(FIELD_OFFSET(DNS_OPT_DATA, Data) + (ByteCount)) (FIELD_OFFSET(DNS_OPT_DATA, Data) + (ByteCount))
#define DNS_DHCID_RECORD_LENGTH(ByteCount) \ #define DNS_DHCID_RECORD_LENGTH(ByteCount) \
(FIELD_OFFSET(DNS_DHCID_DATA, DHCID) + (ByteCount)) (FIELD_OFFSET(DNS_DHCID_DATA, DHCID) + (ByteCount))
#define DNS_NSEC3_RECORD_LENGTH(ByteCount) \
(FIELD_OFFSET(DNS_NSEC3_DATA, chData) + (ByteCount))
#define DNS_NSEC3PARAM_RECORD_LENGTH(ByteCount) \
(FIELD_OFFSET(DNS_NSEC3PARAM_DATA, pbSalt) + (ByteCount))
// //
// Record flags // Record flags
// //
typedef struct _DnsRecordFlags typedef struct _DnsRecordFlags
{ {
DWORD Section : 2; DWORD Section : 2;
DWORD Delete : 1; DWORD Delete : 1;
DWORD CharSet : 2; DWORD CharSet : 2;
DWORD Unused : 3; DWORD Unused : 3;
skipping to change at line 1373 skipping to change at line 1531
// //
#ifdef MIDL_PASS #ifdef MIDL_PASS
#define PDNS_RECORD PVOID #define PDNS_RECORD PVOID
#define PDNS_RECORDA PVOID #define PDNS_RECORDA PVOID
#define PDNS_RECORDW PVOID #define PDNS_RECORDW PVOID
#else #else
typedef struct _DnsRecordW typedef _Struct_size_bytes_(FIELD_OFFSET(struct _DnsRecordW, Data) + wDataLength ) 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.
union union
{ {
DWORD DW; // flags as DWORD DWORD DW; // flags as DWORD
DNS_RECORD_FLAGS S; // flags as structure DNS_RECORD_FLAGS S; // flags as structure
skipping to change at line 1433 skipping to change at line 1591
DNS_OPT_DATA OPT, Opt; DNS_OPT_DATA OPT, Opt;
DNS_DS_DATA DS, Ds; DNS_DS_DATA DS, Ds;
DNS_RRSIG_DATAW RRSIG, Rrsig; DNS_RRSIG_DATAW RRSIG, Rrsig;
DNS_NSEC_DATAW NSEC, Nsec; DNS_NSEC_DATAW NSEC, Nsec;
DNS_DNSKEY_DATA DNSKEY, Dnskey; DNS_DNSKEY_DATA DNSKEY, Dnskey;
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;
DNS_DHCID_DATA DHCID; DNS_DHCID_DATA DHCID;
DNS_NSEC3_DATA NSEC3, Nsec3;
DNS_NSEC3PARAM_DATA NSEC3PARAM, Nsec3Param;
PBYTE pDataPtr;
} Data; } Data;
} }
DNS_RECORDW, *PDNS_RECORDW; DNS_RECORDW, *PDNS_RECORDW;
typedef struct _DnsRecordOptW typedef struct _DnsRecordOptW
{ {
struct _DnsRecordW * pNext; struct _DnsRecordW * pNext;
PWSTR pName; PWSTR pName;
WORD wType; WORD wType;
skipping to change at line 1465 skipping to change at line 1626
// Record Data // Record Data
union union
{ {
DNS_OPT_DATA OPT, Opt; DNS_OPT_DATA OPT, Opt;
} Data; } Data;
} }
DNS_RECORD_OPTW, *PDNS_RECORD_OPTW; DNS_RECORD_OPTW, *PDNS_RECORD_OPTW;
typedef struct _DnsRecordA typedef _Struct_size_bytes_(FIELD_OFFSET(struct _DnsRecordA, Data) + wDataLength ) struct _DnsRecordA
{ {
struct _DnsRecordA * pNext; struct _DnsRecordA * pNext;
PSTR pName; PSTR pName;
WORD wType; WORD wType;
WORD wDataLength; // Not referenced for DNS record types WORD wDataLength; // Not referenced for DNS record types
// defined above. // defined above.
union union
{ {
DWORD DW; // flags as DWORD DWORD DW; // flags as DWORD
DNS_RECORD_FLAGS S; // flags as structure DNS_RECORD_FLAGS S; // flags as structure
skipping to change at line 1525 skipping to change at line 1686
DNS_OPT_DATA OPT, Opt; DNS_OPT_DATA OPT, Opt;
DNS_DS_DATA DS, Ds; DNS_DS_DATA DS, Ds;
DNS_RRSIG_DATAA RRSIG, Rrsig; DNS_RRSIG_DATAA RRSIG, Rrsig;
DNS_NSEC_DATAA NSEC, Nsec; DNS_NSEC_DATAA NSEC, Nsec;
DNS_DNSKEY_DATA DNSKEY, Dnskey; DNS_DNSKEY_DATA DNSKEY, Dnskey;
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;
DNS_DHCID_DATA DHCID; DNS_DHCID_DATA DHCID;
DNS_NSEC3_DATA NSEC3, Nsec3;
DNS_NSEC3PARAM_DATA NSEC3PARAM, Nsec3Param;
PBYTE pDataPtr;
} Data; } Data;
} }
DNS_RECORDA, *PDNS_RECORDA; DNS_RECORDA, *PDNS_RECORDA;
typedef struct _DnsRecordOptA typedef struct _DnsRecordOptA
{ {
struct _DnsRecordA * pNext; struct _DnsRecordA * pNext;
PSTR pName; PSTR pName;
WORD wType; WORD wType;
skipping to change at line 1632 skipping to change at line 1796
#define DNS_RRSET_TERMINATE( rrset ) \ #define DNS_RRSET_TERMINATE( rrset ) \
{ \ { \
PDNS_RRSET _prrset = &(rrset); \ PDNS_RRSET _prrset = &(rrset); \
_prrset->pLastRR->pNext = NULL; \ _prrset->pLastRR->pNext = NULL; \
} }
typedef typedef
VOID VOID
(WINAPI *DNS_PROXY_COMPLETION_ROUTINE) ( (WINAPI *DNS_PROXY_COMPLETION_ROUTINE) (
__in_opt void *completionContext, _In_opt_ void *completionContext,
__in DNS_STATUS status); _In_ DNS_STATUS status);
typedef enum DNS_PROXY_INFORMATION_TYPE { typedef enum DNS_PROXY_INFORMATION_TYPE {
DNS_PROXY_INFORMATION_DIRECT, DNS_PROXY_INFORMATION_DIRECT,
DNS_PROXY_INFORMATION_DEFAULT_SETTINGS, DNS_PROXY_INFORMATION_DEFAULT_SETTINGS,
DNS_PROXY_INFORMATION_PROXY_NAME, DNS_PROXY_INFORMATION_PROXY_NAME,
DNS_PROXY_INFORMATION_DOES_NOT_EXIST DNS_PROXY_INFORMATION_DOES_NOT_EXIST
} DNS_PROXY_INFORMATION_TYPE; } DNS_PROXY_INFORMATION_TYPE;
typedef struct DNS_PROXY_INFORMATION { typedef struct DNS_PROXY_INFORMATION {
__in ULONG version; // Current version is 1 _In_ ULONG version; // Current version is 1
__out DNS_PROXY_INFORMATION_TYPE proxyInformationType; _Out_ DNS_PROXY_INFORMATION_TYPE proxyInformationType;
__out_opt PWSTR proxyName; _Out_opt_ PWSTR proxyName;
} DNS_PROXY_INFORMATION; } DNS_PROXY_INFORMATION;
// //
// Record set manipulation // Record set manipulation
// //
// //
// Record Copy // Record Copy
// Record copy functions also do conversion between character sets. // Record copy functions also do conversion between character sets.
// //
skipping to change at line 1673 skipping to change at line 1837
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 1711 skipping to change at line 1875
// 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(
__inout PDNS_RECORD pRR1, _Inout_ PDNS_RECORD pRR1,
__inout PDNS_RECORD pRR2, _Inout_ PDNS_RECORD pRR2,
__deref_opt_out_opt PDNS_RECORD * ppDiff1, _Outptr_opt_result_maybenull_ PDNS_RECORD * ppDiff1,
__deref_opt_out_opt PDNS_RECORD * ppDiff2 _Outptr_opt_result_maybenull_ PDNS_RECORD * ppDiff2
); );
// //
// Detach next record set from record list // Detach next record set from record list
// //
PDNS_RECORD PDNS_RECORD
DnsRecordSetDetach( DnsRecordSetDetach(
__inout 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 1753 skipping to change at line 1917
{ {
DnsFreeFlat = 0, DnsFreeFlat = 0,
DnsFreeRecordList, DnsFreeRecordList,
DnsFreeParsedMessageFields DnsFreeParsedMessageFields
} }
DNS_FREE_TYPE; DNS_FREE_TYPE;
VOID VOID
WINAPI WINAPI
DnsFree( DnsFree(
__inout PVOID pData, _Pre_opt_valid_ _Frees_ptr_opt_ 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) #if(_WIN32_WINNT >= 0x0501)
#define DnsRecordListFree(p,t) DnsFree(p,DnsFreeRecordList) #define DnsRecordListFree(p,t) DnsFree(p,DnsFreeRecordList)
#else #else
VOID VOID
WINAPI WINAPI
DnsRecordListFree( DnsRecordListFree(
__inout_opt PDNS_RECORD pRecordList, _Inout_opt_ PDNS_RECORD pRecordList,
__in DNS_FREE_TYPE FreeType _In_ DNS_FREE_TYPE FreeType
); );
#endif /* _WIN32_WINNT >= 0x0501 */ #endif /* _WIN32_WINNT >= 0x0501 */
// //
// DNS Query API // DNS Query API
// //
// //
// Options for DnsQuery // Options for DnsQuery
// //
skipping to change at line 1789 skipping to change at line 1953
// //
// 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
#define DNS_QUERY_USE_TCP_ONLY 0x00000002 #define DNS_QUERY_USE_TCP_ONLY 0x00000002
#define DNS_QUERY_NO_RECURSION 0x00000004 #define DNS_QUERY_NO_RECURSION 0x00000004
#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_MULTICAST_ONLY 0x00000400
#define DNS_QUERY_NO_MULTICAST 0x00000800 #define DNS_QUERY_NO_MULTICAST 0x00000800
#define DNS_QUERY_TREAT_AS_FQDN 0x00001000 #define DNS_QUERY_TREAT_AS_FQDN 0x00001000
#define DNS_QUERY_APPEND_MULTILABEL 0x00800000 #define DNS_QUERY_ADDRCONFIG 0x00002000
#define DNS_QUERY_DUAL_ADDR 0x00004000
#define DNS_QUERY_DONT_RESET_TTL_VALUES 0x00100000 #define DNS_QUERY_DONT_RESET_TTL_VALUES 0x00100000
#define DNS_QUERY_DISABLE_IDN_ENCODING 0x00200000
#define DNS_QUERY_APPEND_MULTILABEL 0x00800000
#define DNS_QUERY_DNSSEC_OK 0x01000000
#define DNS_QUERY_DNSSEC_CHECKING_DISABLED 0x02000000
#define DNS_QUERY_RESERVED 0xf0000000 #define DNS_QUERY_RESERVED 0xf0000000
// 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,
__inout_opt PVOID pExtra, _Inout_opt_ PVOID pExtra,
__deref_out_opt PDNS_RECORD * ppQueryResults, _Outptr_result_maybenull_ PDNS_RECORD * ppQueryResults,
__deref_opt_out_opt PVOID * pReserved _Outptr_opt_result_maybenull_ 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,
__inout_opt PVOID pExtra, _Inout_opt_ PVOID pExtra,
__deref_out_opt PDNS_RECORD * ppQueryResults, _Outptr_result_maybenull_ PDNS_RECORD * ppQueryResults,
__deref_opt_out_opt PVOID * pReserved _Outptr_opt_result_maybenull_ 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,
__inout_opt PVOID pExtra, _Inout_opt_ PVOID pExtra,
__deref_out_opt PDNS_RECORD * ppQueryResults, _Outptr_result_maybenull_ PDNS_RECORD * ppQueryResults,
__deref_opt_out_opt PVOID * pReserved _Outptr_opt_result_maybenull_ 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
#if !defined ( USE_PRIVATE_DNS_ADDR ) || defined (MIDL_PASS)
//
// DnsQueryEx
//
#define DNS_QUERY_RESULTS_VERSION1 0x1
typedef struct _DNS_QUERY_RESULT
{
_In_ ULONG Version;
_Out_ DNS_STATUS QueryStatus;
_Out_ ULONG64 QueryOptions;
_Out_ PDNS_RECORD pQueryRecords;
_Inout_opt_ PVOID Reserved;
}
DNS_QUERY_RESULT, *PDNS_QUERY_RESULT;
typedef
VOID
WINAPI
DNS_QUERY_COMPLETION_ROUTINE(
_In_ PVOID pQueryContext,
_Inout_ PDNS_QUERY_RESULT pQueryResults
);
typedef DNS_QUERY_COMPLETION_ROUTINE *PDNS_QUERY_COMPLETION_ROUTINE;
#define DNS_QUERY_REQUEST_VERSION1 0x1
typedef struct _DNS_QUERY_REQUEST
{
_In_ ULONG Version;
_In_opt_ PCWSTR QueryName;
_In_ WORD QueryType;
_In_ ULONG64 QueryOptions;
_In_opt_ PDNS_ADDR_ARRAY pDnsServerList;
_In_opt_ ULONG InterfaceIndex;
_In_opt_ PDNS_QUERY_COMPLETION_ROUTINE pQueryCompletionCallback;
_In_ PVOID pQueryContext;
}
DNS_QUERY_REQUEST, *PDNS_QUERY_REQUEST;
typedef struct _DNS_QUERY_CANCEL
{
CHAR Reserved[32];
}
DNS_QUERY_CANCEL, *PDNS_QUERY_CANCEL;
DNS_STATUS
WINAPI
DnsQueryEx(
_In_ PDNS_QUERY_REQUEST pQueryRequest,
_Inout_ PDNS_QUERY_RESULT pQueryResults,
_Inout_opt_ PDNS_QUERY_CANCEL pCancelHandle
);
DNS_STATUS
WINAPI
DnsCancelQuery(
_In_ PDNS_QUERY_CANCEL pCancelHandle
);
#endif
// //
// DNS Update API // DNS Update API
// //
// DnsAcquireContextHandle // DnsAcquireContextHandle
// DnsReleaseContextHandle // DnsReleaseContextHandle
// DnsModifyRecordsInSet // DnsModifyRecordsInSet
// DnsReplaceRecordSet // DnsReplaceRecordSet
// //
// //
skipping to change at line 1887 skipping to change at line 2117
// 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_opt PVOID Credentials, _In_opt_ PVOID Credentials,
__deref_out PHANDLE pContext _Outptr_ PHANDLE pContext
); );
DNS_STATUS DNS_STATUS
WINAPI WINAPI
DnsAcquireContextHandle_A( DnsAcquireContextHandle_A(
__in DWORD CredentialFlags, _In_ DWORD CredentialFlags,
__in_opt PVOID Credentials, _In_opt_ PVOID Credentials,
__deref_out PHANDLE pContext _Outptr_ PHANDLE pContext
); );
#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_opt PDNS_RECORD pAddRecords, _In_opt_ PDNS_RECORD pAddRecords,
__in_opt PDNS_RECORD pDeleteRecords, _In_opt_ PDNS_RECORD pDeleteRecords,
__in DWORD Options, _In_ DWORD Options,
__in_opt HANDLE hCredentials, _In_opt_ HANDLE hCredentials,
__inout_opt PVOID pExtraList, _Inout_opt_ PVOID pExtraList,
__inout_opt PVOID pReserved _Inout_opt_ PVOID pReserved
); );
DNS_STATUS DNS_STATUS
WINAPI WINAPI
DnsModifyRecordsInSet_A( DnsModifyRecordsInSet_A(
__in_opt PDNS_RECORD pAddRecords, _In_opt_ PDNS_RECORD pAddRecords,
__in_opt PDNS_RECORD pDeleteRecords, _In_opt_ PDNS_RECORD pDeleteRecords,
__in DWORD Options, _In_ DWORD Options,
__in_opt HANDLE hCredentials, _In_opt_ HANDLE hCredentials,
__inout_opt PVOID pExtraList, _Inout_opt_ PVOID pExtraList,
__inout_opt PVOID pReserved _Inout_opt_ PVOID pReserved
); );
DNS_STATUS DNS_STATUS
WINAPI WINAPI
DnsModifyRecordsInSet_UTF8( DnsModifyRecordsInSet_UTF8(
__in_opt PDNS_RECORD pAddRecords, _In_opt_ PDNS_RECORD pAddRecords,
__in_opt PDNS_RECORD pDeleteRecords, _In_opt_ PDNS_RECORD pDeleteRecords,
__in DWORD Options, _In_ DWORD Options,
__in_opt HANDLE hCredentials, _In_opt_ HANDLE hCredentials,
__inout_opt PVOID pExtraList, _Inout_opt_ PVOID pExtraList,
__inout_opt 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 pReplaceSet, _In_ PDNS_RECORD pReplaceSet,
__in DWORD Options, _In_ DWORD Options,
__in_opt HANDLE hContext, _In_opt_ HANDLE hContext,
__inout_opt PVOID pExtraInfo, _Inout_opt_ PVOID pExtraInfo,
__inout_opt PVOID pReserved _Inout_opt_ PVOID pReserved
); );
DNS_STATUS DNS_STATUS
WINAPI WINAPI
DnsReplaceRecordSetA( DnsReplaceRecordSetA(
__in PDNS_RECORD pReplaceSet, _In_ PDNS_RECORD pReplaceSet,
__in DWORD Options, _In_ DWORD Options,
__in_opt HANDLE hContext, _In_opt_ HANDLE hContext,
__inout_opt PVOID pExtraInfo, _Inout_opt_ PVOID pExtraInfo,
__inout_opt PVOID pReserved _Inout_opt_ PVOID pReserved
); );
DNS_STATUS DNS_STATUS
WINAPI WINAPI
DnsReplaceRecordSetUTF8( DnsReplaceRecordSetUTF8(
__in PDNS_RECORD pReplaceSet, _In_ PDNS_RECORD pReplaceSet,
__in DWORD Options, _In_ DWORD Options,
__in_opt HANDLE hContext, _In_opt_ HANDLE hContext,
__inout_opt PVOID pExtraInfo, _Inout_opt_ PVOID pExtraInfo,
__inout_opt 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 2008 skipping to change at line 2238
DnsNameHostnameFull, DnsNameHostnameFull,
DnsNameHostnameLabel, DnsNameHostnameLabel,
DnsNameWildcard, DnsNameWildcard,
DnsNameSrvRecord, DnsNameSrvRecord,
DnsNameValidateTld DnsNameValidateTld
} }
DNS_NAME_FORMAT; DNS_NAME_FORMAT;
DNS_STATUS DNS_STATUS
DnsValidateName_W( DnsValidateName_W(
__in PCWSTR pszName, _In_ PCWSTR pszName,
__in DNS_NAME_FORMAT Format _In_ DNS_NAME_FORMAT Format
); );
DNS_STATUS DNS_STATUS
DnsValidateName_A( DnsValidateName_A(
__in PCSTR pszName, _In_ PCSTR pszName,
__in DNS_NAME_FORMAT Format _In_ DNS_NAME_FORMAT Format
); );
DNS_STATUS DNS_STATUS
DnsValidateName_UTF8( DnsValidateName_UTF8(
__in PCSTR 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 server validation // DNS server validation
skipping to change at line 2050 skipping to change at line 2280
#define DNS_VALSVR_ERROR_REFUSED 0x06 #define DNS_VALSVR_ERROR_REFUSED 0x06
#define DNS_VALSVR_ERROR_NO_TCP 0x10 #define DNS_VALSVR_ERROR_NO_TCP 0x10
#define DNS_VALSVR_ERROR_UNKNOWN 0xFF #define DNS_VALSVR_ERROR_UNKNOWN 0xFF
// Winsock2.h must be included before windns.h to use the validate server functi on // Winsock2.h must be included before windns.h to use the validate server functi on
#ifdef _WS2DEF_ #ifdef _WS2DEF_
DNS_STATUS DNS_STATUS
DnsValidateServerStatus( DnsValidateServerStatus(
__in PSOCKADDR server, _In_ PSOCKADDR server,
__in PCWSTR queryName, _In_opt_ PCWSTR queryName,
__out PDWORD serverStatus _Out_ PDWORD serverStatus
); );
#endif #endif
// //
// DNS name comparison // DNS name comparison
// //
BOOL BOOL
WINAPI WINAPI
DnsNameCompare_A( DnsNameCompare_A(
__in PCSTR pName1, _In_ PCSTR pName1,
__in PCSTR pName2 _In_ PCSTR pName2
); );
BOOL BOOL
WINAPI WINAPI
DnsNameCompare_W( DnsNameCompare_W(
__in PCWSTR pName1, _In_ PCWSTR pName1,
__in PCWSTR 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 2095 skipping to change at line 2325
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(
__inout PDNS_MESSAGE_BUFFER pDnsBuffer, _Inout_ PDNS_MESSAGE_BUFFER pDnsBuffer,
__inout PDWORD pdwBufferSize, _Inout_ PDWORD pdwBufferSize,
__in PCWSTR pszName, _In_ PCWSTR pszName,
__in WORD wType, _In_ WORD wType,
__in WORD Xid, _In_ WORD Xid,
__in BOOL fRecursionDesired _In_ BOOL fRecursionDesired
); );
BOOL BOOL
WINAPI WINAPI
DnsWriteQuestionToBuffer_UTF8( DnsWriteQuestionToBuffer_UTF8(
__inout PDNS_MESSAGE_BUFFER pDnsBuffer, _Inout_ PDNS_MESSAGE_BUFFER pDnsBuffer,
__inout PDWORD pdwBufferSize, _Inout_ PDWORD pdwBufferSize,
__in PCSTR 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,
__deref_out PDNS_RECORD * ppRecord _Outptr_ 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,
__deref_out PDNS_RECORD * ppRecord _Outptr_ PDNS_RECORD * ppRecord
); );
//
// DNS name resolution policy table
//
DWORD DWORD
WINAPI WINAPI
DnsGetProxyInformation( DnsGetProxyInformation(
__in PCWSTR hostName, _In_ PCWSTR hostName,
__inout DNS_PROXY_INFORMATION *proxyInform _Inout_ DNS_PROXY_INFORMATION * proxyInformation,
ation, _Inout_opt_ DNS_PROXY_INFORMATION * defaultProxyInformation,
__inout_opt DNS_PROXY_INFORMATION *defaultProx _In_opt_ DNS_PROXY_COMPLETION_ROUTINE completionRoutine,
yInformation, _In_opt_ void * completionContext
__in_opt DNS_PROXY_COMPLETION_ROUTINE completionRo );
utine,
__in_opt void *completionC
ontext);
VOID DnsFreeProxyName(__inout PWSTR proxyName); VOID
WINAPI
DnsFreeProxyName(
_Frees_ptr_opt_ PWSTR proxyName
);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif // __cplusplus #endif // __cplusplus
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
#endif // _WINDNS_INCLUDED_ #endif // _WINDNS_INCLUDED_
 End of changes. 79 change blocks. 
203 lines changed or deleted 442 lines changed or added

This html diff was produced by rfcdiff 1.41.