• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/**
2 * This file is part of the mingw-w64 runtime package.
3 * No warranty is given; refer to the file DISCLAIMER within this package.
4 */
5cpp_quote("#include <winapifamily.h>")
6cpp_quote("")
7cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)")
8
9import "objidl.idl";
10import "wincrypt.idl";
11
12cpp_quote("")
13interface IWSDAddress;
14interface IWSDMessageParameters;
15interface IWSDUdpAddress;
16interface IWSDUdpMessageParameters;
17interface IWSDHttpAddress;
18interface IWSDHttpMessageParameters;
19
20cpp_quote("")
21cpp_quote("#if WINVER >= 0x601")
22typedef enum {
23  WSD_CONFIG_MAX_INBOUND_MESSAGE_SIZE = 1,
24  WSD_CONFIG_MAX_OUTBOUND_MESSAGE_SIZE = 2,
25  WSD_SECURITY_SSL_CERT_FOR_CLIENT_AUTH = 3,
26  WSD_SECURITY_SSL_SERVER_CERT_VALIDATION = 4,
27  WSD_SECURITY_SSL_CLIENT_CERT_VALIDATION = 5,
28  WSD_SECURITY_SSL_NEGOTIATE_CLIENT_CERT = 6,
29  WSD_SECURITY_COMPACTSIG_SIGNING_CERT = 7,
30  WSD_SECURITY_COMPACTSIG_VALIDATION = 8,
31  WSD_CONFIG_HOSTING_ADDRESSES = 9,
32  WSD_CONFIG_DEVICE_ADDRESSES = 10,
33  WSD_SECURITY_REQUIRE_HTTP_CLIENT_AUTH = 11,
34  WSD_SECURITY_REQUIRE_CLIENT_CERT_OR_HTTP_CLIENT_AUTH = 12,
35  WSD_SECURITY_USE_HTTP_CLIENT_AUTH = 13
36} WSD_CONFIG_PARAM_TYPE;
37
38typedef struct _WSD_CONFIG_PARAM {
39  WSD_CONFIG_PARAM_TYPE configParamType;
40  PVOID pConfigData;
41  DWORD dwConfigDataSize;
42} WSD_CONFIG_PARAM,*PWSD_CONFIG_PARAM;
43
44typedef struct _WSD_SECURITY_CERT_VALIDATION_V1 {
45  PCCERT_CONTEXT *certMatchArray;
46  DWORD dwCertMatchArrayCount;
47  HCERTSTORE hCertMatchStore;
48  HCERTSTORE hCertIssuerStore;
49  DWORD dwCertCheckOptions;
50} WSD_SECURITY_CERT_VALIDATION_V1;
51
52cpp_quote("#if _WIN32_WINNT >= 0x602")
53typedef struct _WSD_SECURITY_CERT_VALIDATION {
54  PCCERT_CONTEXT *certMatchArray;
55  DWORD dwCertMatchArrayCount;
56  HCERTSTORE hCertMatchStore;
57  HCERTSTORE hCertIssuerStore;
58  DWORD dwCertCheckOptions;
59  LPCWSTR pszCNGHashAlgId;
60  BYTE *pbCertHash;
61  DWORD dwCertHashSize;
62} WSD_SECURITY_CERT_VALIDATION;
63cpp_quote("#else")
64cpp_quote("typedef WSD_SECURITY_CERT_VALIDATION_V1 WSD_SECURITY_CERT_VALIDATION;")
65cpp_quote("#endif")
66
67cpp_quote("")
68typedef WSD_SECURITY_CERT_VALIDATION *PWSD_SECURITY_CERT_VALIDATION;
69
70typedef struct _WSD_SECURITY_SIGNATURE_VALIDATION {
71  PCCERT_CONTEXT *signingCertArray;
72  DWORD dwSigningCertArrayCount;
73  HCERTSTORE hSigningCertStore;
74  DWORD dwFlags;
75} WSD_SECURITY_SIGNATURE_VALIDATION,*PWSD_SECURITY_SIGNATURE_VALIDATION;
76
77typedef DWORD WSD_SECURITY_HTTP_AUTH_SCHEMES,*PWSD_SECURITY_HTTP_AUTH_SCHEMES;
78
79cpp_quote("")
80cpp_quote("#define WSDAPI_SSL_CERT_APPLY_DEFAULT_CHECKS 0x0")
81cpp_quote("#define WSDAPI_SSL_CERT_IGNORE_REVOCATION 0x1")
82cpp_quote("#define WSDAPI_SSL_CERT_IGNORE_EXPIRY 0x2")
83cpp_quote("#define WSDAPI_SSL_CERT_IGNORE_WRONG_USAGE 0x4")
84cpp_quote("#define WSDAPI_SSL_CERT_IGNORE_UNKNOWN_CA 0x8")
85cpp_quote("#define WSDAPI_SSL_CERT_IGNORE_INVALID_CN 0x10")
86cpp_quote("")
87cpp_quote("#define WSDAPI_COMPACTSIG_ACCEPT_ALL_MESSAGES 0x1")
88cpp_quote("")
89cpp_quote("#define WSD_SECURITY_HTTP_AUTH_SCHEME_NEGOTIATE 0x1")
90cpp_quote("#define WSD_SECURITY_HTTP_AUTH_SCHEME_NTLM 0x2")
91cpp_quote("")
92
93typedef struct _WSD_CONFIG_ADDRESSES {
94  IWSDAddress **addresses;
95  DWORD dwAddressCount;
96} WSD_CONFIG_ADDRESSES,*PWSD_CONFIG_ADDRESSES;
97cpp_quote("#endif")
98
99cpp_quote("#define WSDAPI_ADDRESSFAMILY_IPV4 1")
100cpp_quote("#define WSDAPI_ADDRESSFAMILY_IPV6 2")
101
102[object, uuid (b9574c6c-12a6-4f74-93a1-3318ff605759), local]
103interface IWSDAddress : IUnknown {
104  HRESULT Serialize ([out, size_is (cchLength)] LPWSTR pszBuffer,[in] DWORD cchLength,[in] BOOL fSafe);
105  HRESULT Deserialize ([in] LPCWSTR pszBuffer);
106}
107
108[object, uuid (70d23498-4ee6-4340-a3df-d845d2235467), local]
109interface IWSDTransportAddress : IWSDAddress {
110  HRESULT GetPort ([out] WORD *pwPort);
111  HRESULT SetPort ([in] WORD wPort);
112  HRESULT GetTransportAddress ([out] LPCWSTR *ppszAddress);
113  HRESULT GetTransportAddressEx ([in] BOOL fSafe,[out] LPCWSTR *ppszAddress);
114  HRESULT SetTransportAddress ([in] LPCWSTR pszAddress);
115}
116
117[object, uuid (1fafe8a2-e6fc-4b80-b6cf-b7d45c416d7c)]
118interface IWSDMessageParameters : IUnknown {
119  HRESULT GetLocalAddress ([out] IWSDAddress **ppAddress);
120  HRESULT SetLocalAddress ([in] IWSDAddress *pAddress);
121  HRESULT GetRemoteAddress ([out] IWSDAddress **ppAddress);
122  HRESULT SetRemoteAddress ([in] IWSDAddress *pAddress);
123  HRESULT GetLowerParameters ([out] IWSDMessageParameters **ppTxParams);
124}
125
126cpp_quote("HRESULT WINAPI")
127cpp_quote("WSDCreateUdpMessageParameters(")
128cpp_quote("IWSDUdpMessageParameters** ppTxParams);")
129
130typedef struct _WSDUdpRetransmitParams {
131  ULONG ulSendDelay;
132  ULONG ulRepeat;
133  ULONG ulRepeatMinDelay;
134  ULONG ulRepeatMaxDelay;
135  ULONG ulRepeatUpperDelay;
136} WSDUdpRetransmitParams;
137
138[object, uuid (9934149f-8f0c-447b-aa0b-73124b0ca7f0)]
139interface IWSDUdpMessageParameters : IWSDMessageParameters {
140  HRESULT SetRetransmitParams ([in] const WSDUdpRetransmitParams *pParams);
141  HRESULT GetRetransmitParams ([out] WSDUdpRetransmitParams *pParams);
142}
143
144cpp_quote("HRESULT WINAPI")
145cpp_quote("WSDCreateUdpAddress(")
146cpp_quote(" IWSDUdpAddress** ppAddress);")
147
148#ifndef SOCKADDR_STORAGE
149cpp_quote("#if 1")
150cpp_quote("")
151cpp_quote("#ifndef __CSADDR_DEFINED__")
152cpp_quote("struct SOCKADDR_STORAGE;")
153cpp_quote("#endif")
154cpp_quote("#else")
155typedef void SOCKADDR_STORAGE;
156cpp_quote("#endif")
157#endif
158
159typedef enum _WSDUdpMessageType {
160  ONE_WAY,
161  TWO_WAY
162} WSDUdpMessageType;
163
164[object, local, uuid (74d6124a-a441-4f78-a1eb-97a8d1996893)]
165interface IWSDUdpAddress : IWSDTransportAddress {
166  HRESULT SetSockaddr ([in] const SOCKADDR_STORAGE *pSockAddr);
167  HRESULT GetSockaddr ([out] SOCKADDR_STORAGE *pSockAddr);
168  HRESULT SetExclusive ([in] BOOL fExclusive);
169  HRESULT GetExclusive ();
170  HRESULT SetMessageType ([in] WSDUdpMessageType messageType);
171  HRESULT GetMessageType ([out] WSDUdpMessageType *pMessageType);
172  HRESULT SetTTL ([in] DWORD dwTTL);
173  HRESULT GetTTL ([out] DWORD *pdwTTL);
174  HRESULT SetAlias ([in] const GUID *pAlias);
175  HRESULT GetAlias ([out] GUID *pAlias);
176}
177
178[object, local, uuid (540bd122-5c83-4dec-b396-ea62a2697fdf)]
179interface IWSDHttpMessageParameters : IWSDMessageParameters {
180  HRESULT SetInboundHttpHeaders ([in] LPCWSTR pszHeaders);
181  HRESULT GetInboundHttpHeaders ([out] LPCWSTR *ppszHeaders);
182  HRESULT SetOutboundHttpHeaders ([in] LPCWSTR pszHeaders);
183  HRESULT GetOutboundHttpHeaders ([out] LPCWSTR *ppszHeaders);
184  HRESULT SetID ([in] LPCWSTR pszId);
185  HRESULT GetID ([out] LPCWSTR *ppszId);
186  HRESULT SetContext ([in] IUnknown *pContext);
187  HRESULT GetContext ([out] IUnknown **ppContext);
188  HRESULT Clear ();
189}
190
191[object, local, uuid (d09ac7bd-2a3e-4b85-8605-2737ff3e4ea0)]
192interface IWSDHttpAddress : IWSDTransportAddress {
193  HRESULT GetSecure ();
194  HRESULT SetSecure ([in] BOOL fSecure);
195  HRESULT GetPath ([out] LPCWSTR *ppszPath);
196  HRESULT SetPath ([in] LPCWSTR pszPath);
197}
198
199cpp_quote("#if WINVER >= 0x601")
200[object, local, uuid (de105e87-a0da-418e-98ad-27b9eed87bdc)]
201interface IWSDSSLClientCertificate : IUnknown {
202  HRESULT GetClientCertificate ([in, out] PCCERT_CONTEXT *ppCertContext);
203  HRESULT GetMappedAccessToken ([in, out] HANDLE *phToken);
204}
205
206[object, local, uuid (0b476df0-8dac-480d-b05c-99781a5884aa)]
207interface IWSDHttpAuthParameters: IUnknown {
208  HRESULT GetClientAccessToken ([out] HANDLE *phToken);
209  HRESULT GetAuthType ([out] PWSD_SECURITY_HTTP_AUTH_SCHEMES pAuthType);
210}
211
212[object, local, uuid (03ce20aa-71c4-45e2-b32e-3766c61c790f), pointer_default (unique), restricted]
213interface IWSDSignatureProperty : IUnknown {
214  HRESULT IsMessageSigned ([out] BOOL *pbSigned);
215  HRESULT IsMessageSignatureTrusted ([out] BOOL *pbSignatureTrusted);
216  HRESULT GetKeyInfo ([out, size_is (*pdwKeyInfoSize)] BYTE *pbKeyInfo,[in, out] DWORD *pdwKeyInfoSize);
217  HRESULT GetSignature ([out, size_is (*pdwSignatureSize)] BYTE *pbSignature,[in, out] DWORD *pdwSignatureSize);
218  HRESULT GetSignedInfoHash ([out, size_is (*pdwHashSize)] BYTE *pbSignedInfoHash,[in, out] DWORD *pdwHashSize);
219}
220cpp_quote("#endif")
221
222cpp_quote("HRESULT WINAPI WSDCreateHttpAddress(IWSDHttpAddress **ppAdress);")
223cpp_quote("HRESULT WINAPI WSDCreateHttpMessageParameters(IWSDHttpMessageParameters **ppTxParams);")
224
225cpp_quote("#endif")
226