[PSDK] add some missing DNS structures, add incomplete dnsrslvr.idl

svn path=/trunk/; revision=73174
This commit is contained in:
Christoph von Wittich
2016-11-08 12:27:55 +00:00
parent 4c9e70a899
commit a0aeb266fa
2 changed files with 183 additions and 4 deletions
+124 -4
View File
@@ -104,6 +104,8 @@ typedef _Return_type_success_(return == 0) DWORD DNS_STATUS;
#define DNS_ATMA_MAX_ADDR_LENGTH 20
#define DNS_ADDR_MAX_SOCKADDR_LENGTH 32
typedef enum _DNS_CHARSET {
DnsCharSetUnknown,
DnsCharSetUnicode,
@@ -165,6 +167,36 @@ typedef struct {
#pragma pack(push, 1)
typedef struct _DnsAddr
{
CHAR MaxSa[DNS_ADDR_MAX_SOCKADDR_LENGTH];
#if defined(__midl) || defined(__WIDL__)
DWORD DnsAddrUserDword[8];
#else
union {
DWORD DnsAddrUserDword[8];
} Data;
#endif
} 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;
#if defined(__midl) || defined(__WIDL__)
[size_is(AddrCount)] DNS_ADDR AddrArray[];
#else
DNS_ADDR AddrArray[1];
#endif
} DNS_ADDR_ARRAY, *PDNS_ADDR_ARRAY;
typedef struct _DNS_HEADER {
WORD Xid;
BYTE RecursionDesired:1;
@@ -447,6 +479,88 @@ typedef struct {
BYTE BitMask[1];
} DNS_WKS_DATA, *PDNS_WKS_DATA;
typedef struct {
WORD wKeyTag;
BYTE chAlgorithm;
BYTE chDigestType;
WORD wDigestLength;
WORD wPad;
BYTE Digest[1];
} DNS_DS_DATA;
typedef struct {
LPWSTR pNextDomainName;
WORD wTypeBitMapsLength;
WORD wPad;
BYTE TypeBitMaps[1];
} DNS_NSEC_DATAW;
typedef struct {
WORD wFlags;
BYTE chProtocol;
BYTE chAlgorithm;
WORD wKeyLength;
WORD wPad;
BYTE Key[1];
} DNS_DNSKEY_DATA;
typedef struct {
WORD wDataLength;
WORD wPad;
BYTE Data[1];
} DNS_OPT_DATA;
typedef struct {
WORD wTypeCovered;
BYTE chAlgorithm;
BYTE chLabelCount;
DWORD dwOriginalTtl;
DWORD dwExpiration;
DWORD dwTimeSigned;
WORD wKeyTag;
WORD Pad;
LPWSTR pNameSigner;
BYTE Signature[1];
} DNS_RRSIG_DATAW;
#if defined(__midl) || defined(__WIDL__)
typedef [switch_type(unsigned short )] union DNS_DATAW {
[case(1)] DNS_A_DATA A;
[case(6)] DNS_SOA_DATAW SOA;
[case(12)] DNS_PTR_DATAW PTR;
[case(2)] DNS_PTR_DATAW NS;
[case(5)] DNS_PTR_DATAW CNAME;
[case(7)] DNS_PTR_DATAW MB;
[case(3)] DNS_PTR_DATAW MD;
[case(4)] DNS_PTR_DATAW MF;
[case(8)] DNS_PTR_DATAW MG;
[case(9)] DNS_PTR_DATAW MR;
[case(14)] DNS_MINFO_DATAW MINFO;
[case(17)] DNS_MINFO_DATAW RP;
[case(15)] DNS_MX_DATAW MX;
[case(18)] DNS_MX_DATAW AFSDB;
[case(21)] DNS_MX_DATAW RT;
[case(28)] DNS_AAAA_DATA AAAA;
[case(33)] DNS_SRV_DATAW SRV;
[case(34)] DNS_ATMA_DATA ATMA;
[case(43)] DNS_DS_DATA DS;
[case(46)] DNS_RRSIG_DATAW RRSIG;
[case(47)] DNS_NSEC_DATAW NSEC;
[case(48)] DNS_DNSKEY_DATA DNSKEY;
[case(41)] DNS_OPT_DATA OPT;
} DNS_DATAW;
typedef struct _DnsRecordW {
[unique]struct _DnsRecordW *pNext;
[unique][string] LPWSTR pName;
WORD wType;
WORD wDataLength;
DWORD Flags;
DWORD dwTtl;
DWORD dwReserved;
[switch_is(wType)] DNS_DATAW Data;
} _DnsRecordW;
#else
typedef struct _DnsRecordA {
struct _DnsRecordA* pNext;
LPSTR pName;
@@ -521,6 +635,8 @@ typedef struct _DnsRecordW {
#define PDNS_RECORD PDNS_RECORDA
#endif
#endif
typedef struct _DnsRRSet {
PDNS_RECORD pFirstRR;
PDNS_RECORD pLastRR;
@@ -547,6 +663,9 @@ typedef struct _DnsRRSet {
_prrset->pLastRR->pNext = NULL; \
}
#ifndef __WIDL__
// HACK
DNS_STATUS
WINAPI
DnsAcquireContextHandle_A(
@@ -608,14 +727,14 @@ DnsModifyRecordsInSet_UTF8(
BOOL
WINAPI
DnsNameCompare_A(
_In_ PCSTR,
_In_ PCSTR);
_In_ PCSTR pszName1,
_In_ PCSTR pszName2);
BOOL
WINAPI
DnsNameCompare_W(
_In_ PCWSTR,
_In_ PCWSTR);
_In_ PCWSTR pszwName1,
_In_ PCWSTR pszwName2);
DNS_STATUS
WINAPI
@@ -765,6 +884,7 @@ DnsWriteQuestionToBuffer_UTF8(
_In_ WORD wType,
_In_ WORD Xid,
_In_ BOOL fRecursionDesired);
#endif
#ifdef UNICODE
@@ -0,0 +1,59 @@
/*
* DNS Resolver Service interface definition
*/
#include <ms-dtyp.idl>
#include <sal.h>
#include <windns.h>
typedef [handle, string] LPWSTR DNSRSLVR_HANDLE;
[
uuid(45776b01-5956-4485-9f80-f428f7d60129),
version(2.0),
pointer_default(unique)
#ifndef __midl
,explicit_handle
#endif
]
interface DnsResolver
{
/* Function: 0x00 */
/* CRrReadCache */
/* Function: 0x01 */
/* CRrReadCacheEntry */
/* Function: 0x02 */
/* CRrGetHashTableStats */
/* Function: 0x03 */
/* R_ResolverGetConfig */
/* Function: 0x04 */
DWORD R_ResolverFlushCache(
[in][unique][string] DNSRSLVR_HANDLE pwszServerName);
/* Function: 0x05 */
/* R_ResolverFlushCacheEntry */
/* Function: 0x06 */
/* R_ResolverRegisterCluster */
/* Function: 0x07 */
DWORD R_ResolverQuery(
[in][unique][string] DNSRSLVR_HANDLE pwszServerName,
[in][unique][string] LPCWSTR pwsName,
[in] WORD wType,
[in] DWORD Flags,
[in][out] DWORD *dwRecords,
[out][ref] _DnsRecordW** ppResultRecords);
/* Function: 0x08 */
/* R_ResolverEnumCache */
/* Function: 0x09 */
/* R_ResolverPoke */
}