DCOM IDL file based on the DCOM specification.
[wine] / dlls / ole32 / dcom.h
1 /*** Autogenerated by WIDL 0.1 from dcom.idl - Do not edit ***/
2 #include "rpc.h"
3 #include "rpcndr.h"
4
5 #ifndef __WIDL_DCOM_H
6 #define __WIDL_DCOM_H
7 #ifdef __cplusplus
8 extern "C" {
9 #endif
10 #include "unknwn.h"
11 typedef MIDL_uhyper ID;
12
13 typedef ID MID;
14
15 typedef ID OXID;
16
17 typedef ID OID;
18
19 typedef ID SETID;
20
21 typedef GUID IPID;
22
23 typedef GUID CID;
24
25 typedef REFGUID REFIPID;
26
27 #define COM_MINOR_VERSION_1 (1)
28
29 #define COM_MINOR_VERSION_2 (2)
30
31 #define COM_MAJOR_VERSION (5)
32
33 #define COM_MINOR_VERSION (3)
34
35 typedef struct tagCOMVERSION {
36     unsigned short MajorVersion;
37     unsigned short MinorVersion;
38 } COMVERSION;
39
40 #define ORPCF_NULL (0)
41
42 #define ORPCF_LOCAL (1)
43
44 #define ORPCF_RESERVED1 (2)
45
46 #define ORPCF_RESERVED2 (4)
47
48 #define ORPCF_RESERVED3 (8)
49
50 #define ORPCF_RESERVED4 (16)
51
52 typedef struct tagORPC_EXTENT {
53     GUID id;
54     unsigned long size;
55     byte data[1];
56 } ORPC_EXTENT;
57
58 typedef struct tagORPC_EXTENT_ARRAY {
59     unsigned long size;
60     unsigned long reserved;
61     ORPC_EXTENT **extent;
62 } ORPC_EXTENT_ARRAY;
63
64 typedef struct tagORPCTHIS {
65     COMVERSION version;
66     unsigned long flags;
67     unsigned long reserved1;
68     CID cid;
69     ORPC_EXTENT_ARRAY *extensions;
70 } ORPCTHIS;
71
72 typedef struct tagORPCTHAT {
73     unsigned long flags;
74     ORPC_EXTENT_ARRAY *extensions;
75 } ORPCTHAT;
76
77 #define NCADG_IP_UDP (0x8)
78
79 #define NCACN_IP_TCP (0x7)
80
81 #define NCADG_IPX (0xe)
82
83 #define NCACN_SPX (0xc)
84
85 #define NCACN_NB_NB (0x12)
86
87 #define NCACN_NB_IPX (0xd)
88
89 #define NCACN_DNET_NSP (0x4)
90
91 #define NCACN_HTTP (0x1f)
92
93 typedef struct tagSTRINGBINDING {
94     unsigned short wTowerId;
95     unsigned short aNetworkAddr[1];
96 } STRINGBINDING;
97
98 #define COM_C_AUTHZ_NONE (0xffff)
99
100 typedef struct tagSECURITYBINDING {
101     unsigned short wAuthnSvc;
102     unsigned short wAuthzSvc;
103     unsigned short aPrincName[1];
104 } SECURITYBINDING;
105
106 typedef struct tagDUALSTRINGARRAY {
107     unsigned short wNumEntries;
108     unsigned short wSecurityOffset;
109     unsigned short aStringArray[1];
110 } DUALSTRINGARRAY;
111
112 #define OBJREF_SIGNATURE (0x574f454d)
113
114 #define OBJREF_STANDARD (0x1)
115
116 #define OBJREF_HANDLER (0x2)
117
118 #define OBJREF_CUSTOM (0x4)
119
120 #define SORF_OXRES1 (0x1)
121
122 #define SORF_OXRES2 (0x20)
123
124 #define SORF_OXRES3 (0x40)
125
126 #define SORF_OXRES4 (0x80)
127
128 #define SORF_OXRES5 (0x100)
129
130 #define SORF_OXRES6 (0x200)
131
132 #define SORF_OXRES7 (0x400)
133
134 #define SORF_OXRES8 (0x800)
135
136 #define SORF_NULL (0x0)
137
138 #define SORF_NOPING (0x1000)
139
140 typedef struct tagSTDOBJREF {
141     unsigned long flags;
142     unsigned long cPublicRefs;
143     OXID oxid;
144     OID oid;
145     IPID ipid;
146 } STDOBJREF;
147
148 typedef struct tagOBJREF {
149     unsigned long signature;
150     unsigned long flags;
151     GUID iid;
152     union {
153         struct OR_STANDARD {
154             STDOBJREF std;
155             DUALSTRINGARRAY saResAddr;
156         } u_standard;
157         struct OR_HANDLER {
158             STDOBJREF std;
159             CLSID clsid;
160             DUALSTRINGARRAY saResAddr;
161         } u_handler;
162         struct OR_CUSTOM {
163             CLSID clsid;
164             unsigned long cbExtension;
165             unsigned long size;
166             byte *pData;
167         } u_custom;
168     } u_objref;
169 } OBJREF;
170
171 typedef struct tagMInterfacePointer {
172     ULONG ulCntData;
173     BYTE abData[1];
174 } MInterfacePointer;
175
176 typedef MInterfacePointer *PMInterfacePointer;
177
178 typedef struct IRemUnknown IRemUnknown;
179 typedef IRemUnknown *LPREMUNKNOWN;
180
181 typedef struct tagREMQIRESULT {
182     HRESULT hResult;
183     STDOBJREF std;
184 } REMQIRESULT;
185
186 typedef struct tagREMINTERFACEREF {
187     IPID ipid;
188     unsigned long cPublicRefs;
189     unsigned long cPrivateRefs;
190 } REMINTERFACEREF;
191
192 /*****************************************************************************
193  * IRemUnknown interface
194  */
195 DEFINE_GUID(IID_IRemUnknown, 0x00000131, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
196 #if defined(__cplusplus) && !defined(CINTERFACE)
197 struct IRemUnknown : public IUnknown
198 {
199     virtual HRESULT STDMETHODCALLTYPE RemQueryInterface(
200         REFIPID ripid,
201         unsigned long cRefs,
202         unsigned short cIids,
203         IID* iids,
204         REMQIRESULT** ppQIResults) = 0;
205
206     virtual HRESULT STDMETHODCALLTYPE RemAddRef(
207         unsigned short cInterfaceRefs,
208         REMINTERFACEREF* InterfaceRefs,
209         HRESULT* pResults) = 0;
210
211     virtual HRESULT STDMETHODCALLTYPE RemRelease(
212         unsigned short cInterfaceRefs,
213         REMINTERFACEREF* InterfaceRefs) = 0;
214
215 };
216 #else
217 typedef struct IRemUnknownVtbl IRemUnknownVtbl;
218 struct IRemUnknown {
219     const IRemUnknownVtbl* lpVtbl;
220 };
221 struct IRemUnknownVtbl {
222     ICOM_MSVTABLE_COMPAT_FIELDS
223
224     /*** IUnknown methods ***/
225     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
226         IRemUnknown* This,
227         REFIID riid,
228         void** ppvObject);
229
230     ULONG (STDMETHODCALLTYPE *AddRef)(
231         IRemUnknown* This);
232
233     ULONG (STDMETHODCALLTYPE *Release)(
234         IRemUnknown* This);
235
236     /*** IRemUnknown methods ***/
237     HRESULT (STDMETHODCALLTYPE *RemQueryInterface)(
238         IRemUnknown* This,
239         REFIPID ripid,
240         unsigned long cRefs,
241         unsigned short cIids,
242         IID* iids,
243         REMQIRESULT** ppQIResults);
244
245     HRESULT (STDMETHODCALLTYPE *RemAddRef)(
246         IRemUnknown* This,
247         unsigned short cInterfaceRefs,
248         REMINTERFACEREF* InterfaceRefs,
249         HRESULT* pResults);
250
251     HRESULT (STDMETHODCALLTYPE *RemRelease)(
252         IRemUnknown* This,
253         unsigned short cInterfaceRefs,
254         REMINTERFACEREF* InterfaceRefs);
255
256 };
257
258 /*** IUnknown methods ***/
259 #define IRemUnknown_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
260 #define IRemUnknown_AddRef(p) (p)->lpVtbl->AddRef(p)
261 #define IRemUnknown_Release(p) (p)->lpVtbl->Release(p)
262 /*** IRemUnknown methods ***/
263 #define IRemUnknown_RemQueryInterface(p,a,b,c,d,e) (p)->lpVtbl->RemQueryInterface(p,a,b,c,d,e)
264 #define IRemUnknown_RemAddRef(p,a,b,c) (p)->lpVtbl->RemAddRef(p,a,b,c)
265 #define IRemUnknown_RemRelease(p,a,b) (p)->lpVtbl->RemRelease(p,a,b)
266
267 #endif
268
269 #define IRemUnknown_METHODS \
270     ICOM_MSVTABLE_COMPAT_FIELDS \
271     /*** IUnknown methods ***/ \
272     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
273     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
274     STDMETHOD_(ULONG,Release)(THIS) PURE; \
275     /*** IRemUnknown methods ***/ \
276     STDMETHOD_(HRESULT,RemQueryInterface)(THIS_ REFIPID ripid, unsigned long cRefs, unsigned short cIids, IID* iids, REMQIRESULT** ppQIResults) PURE; \
277     STDMETHOD_(HRESULT,RemAddRef)(THIS_ unsigned short cInterfaceRefs, REMINTERFACEREF* InterfaceRefs, HRESULT* pResults) PURE; \
278     STDMETHOD_(HRESULT,RemRelease)(THIS_ unsigned short cInterfaceRefs, REMINTERFACEREF* InterfaceRefs) PURE;
279
280 HRESULT CALLBACK IRemUnknown_RemQueryInterface_Proxy(
281     IRemUnknown* This,
282     REFIPID ripid,
283     unsigned long cRefs,
284     unsigned short cIids,
285     IID* iids,
286     REMQIRESULT** ppQIResults);
287 void __RPC_STUB IRemUnknown_RemQueryInterface_Stub(
288     struct IRpcStubBuffer* This,
289     struct IRpcChannelBuffer* pRpcChannelBuffer,
290     PRPC_MESSAGE pRpcMessage,
291     DWORD* pdwStubPhase);
292 HRESULT CALLBACK IRemUnknown_RemAddRef_Proxy(
293     IRemUnknown* This,
294     unsigned short cInterfaceRefs,
295     REMINTERFACEREF* InterfaceRefs,
296     HRESULT* pResults);
297 void __RPC_STUB IRemUnknown_RemAddRef_Stub(
298     struct IRpcStubBuffer* This,
299     struct IRpcChannelBuffer* pRpcChannelBuffer,
300     PRPC_MESSAGE pRpcMessage,
301     DWORD* pdwStubPhase);
302 HRESULT CALLBACK IRemUnknown_RemRelease_Proxy(
303     IRemUnknown* This,
304     unsigned short cInterfaceRefs,
305     REMINTERFACEREF* InterfaceRefs);
306 void __RPC_STUB IRemUnknown_RemRelease_Stub(
307     struct IRpcStubBuffer* This,
308     struct IRpcChannelBuffer* pRpcChannelBuffer,
309     PRPC_MESSAGE pRpcMessage,
310     DWORD* pdwStubPhase);
311
312 typedef struct IRemUnknown2 IRemUnknown2;
313 typedef IRemUnknown2 *LPREMUNKNOWN2;
314
315 /*****************************************************************************
316  * IRemUnknown2 interface
317  */
318 DEFINE_GUID(IID_IRemUnknown2, 0x00000142, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
319 #if defined(__cplusplus) && !defined(CINTERFACE)
320 struct IRemUnknown2 : public IRemUnknown
321 {
322     virtual HRESULT STDMETHODCALLTYPE RemQueryInterface2(
323         REFIPID ripid,
324         unsigned short cIids,
325         IID* iids,
326         HRESULT* phr,
327         MInterfacePointer** ppMIF) = 0;
328
329 };
330 #else
331 typedef struct IRemUnknown2Vtbl IRemUnknown2Vtbl;
332 struct IRemUnknown2 {
333     const IRemUnknown2Vtbl* lpVtbl;
334 };
335 struct IRemUnknown2Vtbl {
336     ICOM_MSVTABLE_COMPAT_FIELDS
337
338     /*** IUnknown methods ***/
339     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
340         IRemUnknown2* This,
341         REFIID riid,
342         void** ppvObject);
343
344     ULONG (STDMETHODCALLTYPE *AddRef)(
345         IRemUnknown2* This);
346
347     ULONG (STDMETHODCALLTYPE *Release)(
348         IRemUnknown2* This);
349
350     /*** IRemUnknown methods ***/
351     HRESULT (STDMETHODCALLTYPE *RemQueryInterface)(
352         IRemUnknown2* This,
353         REFIPID ripid,
354         unsigned long cRefs,
355         unsigned short cIids,
356         IID* iids,
357         REMQIRESULT** ppQIResults);
358
359     HRESULT (STDMETHODCALLTYPE *RemAddRef)(
360         IRemUnknown2* This,
361         unsigned short cInterfaceRefs,
362         REMINTERFACEREF* InterfaceRefs,
363         HRESULT* pResults);
364
365     HRESULT (STDMETHODCALLTYPE *RemRelease)(
366         IRemUnknown2* This,
367         unsigned short cInterfaceRefs,
368         REMINTERFACEREF* InterfaceRefs);
369
370     /*** IRemUnknown2 methods ***/
371     HRESULT (STDMETHODCALLTYPE *RemQueryInterface2)(
372         IRemUnknown2* This,
373         REFIPID ripid,
374         unsigned short cIids,
375         IID* iids,
376         HRESULT* phr,
377         MInterfacePointer** ppMIF);
378
379 };
380
381 /*** IUnknown methods ***/
382 #define IRemUnknown2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
383 #define IRemUnknown2_AddRef(p) (p)->lpVtbl->AddRef(p)
384 #define IRemUnknown2_Release(p) (p)->lpVtbl->Release(p)
385 /*** IRemUnknown methods ***/
386 #define IRemUnknown2_RemQueryInterface(p,a,b,c,d,e) (p)->lpVtbl->RemQueryInterface(p,a,b,c,d,e)
387 #define IRemUnknown2_RemAddRef(p,a,b,c) (p)->lpVtbl->RemAddRef(p,a,b,c)
388 #define IRemUnknown2_RemRelease(p,a,b) (p)->lpVtbl->RemRelease(p,a,b)
389 /*** IRemUnknown2 methods ***/
390 #define IRemUnknown2_RemQueryInterface2(p,a,b,c,d,e) (p)->lpVtbl->RemQueryInterface2(p,a,b,c,d,e)
391
392 #endif
393
394 #define IRemUnknown2_METHODS \
395     ICOM_MSVTABLE_COMPAT_FIELDS \
396     /*** IUnknown methods ***/ \
397     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
398     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
399     STDMETHOD_(ULONG,Release)(THIS) PURE; \
400     /*** IRemUnknown methods ***/ \
401     STDMETHOD_(HRESULT,RemQueryInterface)(THIS_ REFIPID ripid, unsigned long cRefs, unsigned short cIids, IID* iids, REMQIRESULT** ppQIResults) PURE; \
402     STDMETHOD_(HRESULT,RemAddRef)(THIS_ unsigned short cInterfaceRefs, REMINTERFACEREF* InterfaceRefs, HRESULT* pResults) PURE; \
403     STDMETHOD_(HRESULT,RemRelease)(THIS_ unsigned short cInterfaceRefs, REMINTERFACEREF* InterfaceRefs) PURE; \
404     /*** IRemUnknown2 methods ***/ \
405     STDMETHOD_(HRESULT,RemQueryInterface2)(THIS_ REFIPID ripid, unsigned short cIids, IID* iids, HRESULT* phr, MInterfacePointer** ppMIF) PURE;
406
407 HRESULT CALLBACK IRemUnknown2_RemQueryInterface2_Proxy(
408     IRemUnknown2* This,
409     REFIPID ripid,
410     unsigned short cIids,
411     IID* iids,
412     HRESULT* phr,
413     MInterfacePointer** ppMIF);
414 void __RPC_STUB IRemUnknown2_RemQueryInterface2_Stub(
415     struct IRpcStubBuffer* This,
416     struct IRpcChannelBuffer* pRpcChannelBuffer,
417     PRPC_MESSAGE pRpcMessage,
418     DWORD* pdwStubPhase);
419
420 #if 0
421 /*****************************************************************************
422  * IOXIDResolver interface (v0.0)
423  */
424 DEFINE_GUID(IID_IOXIDResolver, 0x99fcfec4, 0x5260, 0x101b, 0xbb,0xcb, 0x00,0xaa,0x00,0x21,0x34,0x7a);
425 extern RPC_IF_HANDLE IOXIDResolver_v0_0_c_ifspec;
426 extern RPC_IF_HANDLE IOXIDResolver_v0_0_s_ifspec;
427 error_status_t ResolveOxid(
428     handle_t hRpc,
429     OXID* pOxid,
430     unsigned short cRequestedProtseqs,
431     unsigned short arRequestedProtseqs[],
432     DUALSTRINGARRAY** ppdsaOxidBindings,
433     IPID* pipidRemUnknown,
434     DWORD* pAuthnHint);
435 error_status_t SimplePing(
436     handle_t hRpc,
437     SETID* pSetId);
438 error_status_t ComplexPing(
439     handle_t hRpc,
440     SETID* pSetId,
441     unsigned short SequenceNum,
442     unsigned short cAddToSet,
443     unsigned short cDelFromSet,
444     OID AddToSet[],
445     OID DelFromSet[],
446     unsigned short* pPingBackoffFactor);
447 error_status_t ServerAlive(
448     handle_t hRpc);
449 error_status_t ResolveOxid2(
450     handle_t hRpc,
451     OXID* pOxid,
452     unsigned short cRequestedProtseqs,
453     unsigned short arRequestedProtseqs[],
454     DUALSTRINGARRAY** ppdsaOxidBindings,
455     IPID* pipidRemUnknown,
456     DWORD* pAuthnHint,
457     COMVERSION* pComVersion);
458
459 #define MODE_GET_CLASS_OBJECT (0x7fffffff)
460
461 /*****************************************************************************
462  * IRemoteActivation interface (v0.0)
463  */
464 DEFINE_GUID(IID_IRemoteActivation, 0x4d9f4ab8, 0x7d1c, 0x11cf, 0x86,0x1e, 0x00,0x20,0xaf,0x6e,0x7c,0x57);
465 extern RPC_IF_HANDLE IRemoteActivation_v0_0_c_ifspec;
466 extern RPC_IF_HANDLE IRemoteActivation_v0_0_s_ifspec;
467 HRESULT RemoteActivation(
468     handle_t hRpc,
469     ORPCTHIS* ORPCthis,
470     ORPCTHAT* ORPCthat,
471     GUID* Clsid,
472     WCHAR* pwszObjectName,
473     MInterfacePointer* pObjectStorage,
474     DWORD ClientImpLevel,
475     DWORD Mode,
476     DWORD Interfaces,
477     IID* pIIDs,
478     unsigned short cRequestedProtseqs,
479     unsigned short RequestedProtseqs[],
480     OXID* pOxid,
481     DUALSTRINGARRAY** ppdsaOxidBindings,
482     IPID* pipidRemUnknown,
483     DWORD* pAuthnHint,
484     COMVERSION* pServerVersion,
485     HRESULT* phr,
486     MInterfacePointer** ppInterfaceData,
487     HRESULT* pResults);
488
489 #endif
490 #ifdef __cplusplus
491 }
492 #endif
493 #endif /* __WIDL_DCOM_H */