ReactOS  0.4.13-dev-99-g7e18b6d
dcom.idl
Go to the documentation of this file.
1 /*
2  * Copyright 2003 Ove K√•ven, TransGaming Technologies
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2.1 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with this library; if not, write to the Free Software
16  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
17  */
18 
19 /* see the official DCOM specification
20  * (there's a copy at http://www.grimes.demon.co.uk/DCOM/DCOMSpec.htm) */
21 
22 #pragma makedep proxy
23 #pragma makedep register
24 
25 import "unknwn.idl";
26 
27 [
28  threading(both),
29  uuid(00000320-0000-0000-c000-000000000046)
30 ]
31 coclass PSFactoryBuffer { interface IFactoryBuffer; }
32 
33 [
34  uuid(99fcfe60-5260-101b-bbcb-00aa0021347a),
36 ]
37 interface ObjectRpcBaseTypes
38 {
39  typedef unsigned hyper ID;
40  typedef ID MID;
41  typedef ID OXID;
42  typedef ID OID;
43  typedef ID SETID;
44  typedef GUID IPID;
45  typedef GUID CID;
46  typedef REFGUID REFIPID;
47 
48  const unsigned short COM_MINOR_VERSION_1 = 1;
49  const unsigned short COM_MINOR_VERSION_2 = 2;
50 
51  const unsigned short COM_MAJOR_VERSION = 5;
52  const unsigned short COM_MINOR_VERSION = 3;
53 
54  typedef struct tagCOMVERSION {
55  unsigned short MajorVersion;
56  unsigned short MinorVersion;
57  } COMVERSION;
58 
59  const unsigned long ORPCF_NULL = 0;
60  const unsigned long ORPCF_LOCAL = 1;
61  const unsigned long ORPCF_RESERVED1 = 2;
62  const unsigned long ORPCF_RESERVED2 = 4;
63  const unsigned long ORPCF_RESERVED3 = 8;
64  const unsigned long ORPCF_RESERVED4 = 16;
65 
66  typedef struct tagORPC_EXTENT {
67  GUID id;
68  unsigned long size;
69  [size_is((size+7)&~7)] byte data[];
70  } ORPC_EXTENT;
71 
72  typedef struct tagORPC_EXTENT_ARRAY {
73  unsigned long size;
74  unsigned long reserved;
75  [size_is((size+1)&~1,), unique] ORPC_EXTENT **extent;
76  } ORPC_EXTENT_ARRAY;
77 
78  typedef struct tagORPCTHIS {
79  COMVERSION version;
80  unsigned long flags;
81  unsigned long reserved1;
82  CID cid;
83  [unique] ORPC_EXTENT_ARRAY *extensions;
84  } ORPCTHIS;
85 
86  typedef struct tagORPCTHAT {
87  unsigned long flags;
88  [unique] ORPC_EXTENT_ARRAY *extensions;
89  } ORPCTHAT;
90 
91  const unsigned short NCADG_IP_UDP = 0x08;
92  const unsigned short NCACN_IP_TCP = 0x07;
93  const unsigned short NCADG_IPX = 0x0E;
94  const unsigned short NCACN_SPX = 0x0C;
95  const unsigned short NCACN_NB_NB = 0x12;
96  const unsigned short NCACN_NB_IPX = 0x0D;
97  const unsigned short NCACN_DNET_NSP = 0x04;
98  const unsigned short NCACN_HTTP = 0x1F;
99 
100  typedef struct tagSTRINGBINDING {
101  unsigned short wTowerId;
102  [string] WCHAR aNetworkAddr[];
103  } STRINGBINDING;
104 
105  const unsigned short COM_C_AUTHZ_NONE = 0xffff;
106 
107  typedef struct tagSECURITYBINDING {
108  unsigned short wAuthnSvc;
109  unsigned short wAuthzSvc;
110  [string] WCHAR aPrincName[];
111  } SECURITYBINDING;
112 
113  typedef struct tagDUALSTRINGARRAY {
114  unsigned short wNumEntries;
115  unsigned short wSecurityOffset;
116  [size_is(wNumEntries)] unsigned short aStringArray[];
117  } DUALSTRINGARRAY;
118 
119  typedef struct tagOXID_INFO {
120  DWORD dwTid;
121  DWORD dwPid;
122  IPID ipidRemUnknown;
123  DWORD dwAuthnHint;
125  } OXID_INFO;
126 
127  const unsigned long OBJREF_SIGNATURE = 0x574f454d; /* "MEOW" */
128  const unsigned long OBJREF_STANDARD = 0x1;
129  const unsigned long OBJREF_HANDLER = 0x2;
130  const unsigned long OBJREF_CUSTOM = 0x4;
131  const unsigned long SORF_OXRES1 = 0x1;
132  const unsigned long SORF_OXRES2 = 0x20;
133  const unsigned long SORF_OXRES3 = 0x40;
134  const unsigned long SORF_OXRES4 = 0x80;
135  const unsigned long SORF_OXRES5 = 0x100;
136  const unsigned long SORF_OXRES6 = 0x200;
137  const unsigned long SORF_OXRES7 = 0x400;
138  const unsigned long SORF_OXRES8 = 0x800;
139  const unsigned long SORF_NULL = 0x0;
140  const unsigned long SORF_NOPING = 0x1000;
141 
142  typedef struct tagSTDOBJREF {
143  unsigned long flags;
144  unsigned long cPublicRefs;
145  OXID oxid;
146  OID oid;
147  IPID ipid;
148  } STDOBJREF;
149 
150  typedef struct tagOBJREF {
151  unsigned long signature;
152  unsigned long flags;
153  GUID iid;
154  [switch_is(flags)] union {
155  [case(OBJREF_STANDARD)] struct OR_STANDARD {
156  STDOBJREF std;
157  DUALSTRINGARRAY saResAddr;
158  } u_standard;
159  [case(OBJREF_HANDLER)] struct OR_HANDLER {
160  STDOBJREF std;
161  CLSID clsid;
162  DUALSTRINGARRAY saResAddr;
163  } u_handler;
164  [case(OBJREF_CUSTOM)] struct OR_CUSTOM {
165  CLSID clsid;
166  unsigned long cbExtension;
167  ULONG size;
168  [size_is(size), ref] byte *pData;
169  } u_custom;
170  } u_objref;
171  } OBJREF;
172 
173  typedef struct tagMInterfacePointer {
174  ULONG ulCntData;
175  [size_is(ulCntData)] BYTE abData[];
176  } MInterfacePointer;
177 
178  typedef [unique] MInterfacePointer *PMInterfacePointer;
179 
180 } /* interface ObjectRpcBaseTypes */
181 
182 [
183  object,
184  uuid(00000131-0000-0000-C000-000000000046)
185 ]
187 {
189 
190  typedef struct tagREMQIRESULT {
193  } REMQIRESULT;
194 
195  typedef struct tagREMINTERFACEREF {
197  unsigned long cPublicRefs;
198  unsigned long cPrivateRefs;
199  } REMINTERFACEREF;
200 
202  [in] REFIPID ripid,
203  [in] ULONG cRefs,
204  [in] unsigned short cIids,
205  [in, size_is(cIids)] IID *iids,
206  [out, size_is(,cIids)] REMQIRESULT **ppQIResults);
207 
209  [in] unsigned short cInterfaceRefs,
210  [in, size_is(cInterfaceRefs)] REMINTERFACEREF* InterfaceRefs,
211  [out, size_is(cInterfaceRefs)] HRESULT *pResults);
212 
214  [in] unsigned short cInterfaceRefs,
215  [in, size_is(cInterfaceRefs)] REMINTERFACEREF* InterfaceRefs);
216 }
217 
218 [
219  object,
220  uuid(00000142-0000-0000-C000-000000000046)
221 ]
223 {
225 
227  [in] REFIPID ripid,
228  [in] unsigned short cIids,
229  [in, size_is(cIids)] IID *iids,
230  [out, size_is(cIids)] HRESULT *phr,
231  [out, size_is(cIids)] MInterfacePointer **ppMIF);
232 }
233 
234 [
235  uuid(99fcfec4-5260-101b-bbcb-00aa0021347a),
237 ]
238 interface IOXIDResolver
239 {
240  [idempotent] error_status_t ResolveOxid(
241  [in] handle_t hRpc,
242  [in] OXID *pOxid,
243  [in] unsigned short cRequestedProtseqs,
244  [in, ref, size_is(cRequestedProtseqs)] unsigned short arRequestedProtseqs[],
245  [out, ref] DUALSTRINGARRAY **ppdsaOxidBindings,
246  [out, ref] IPID *pipidRemUnknown,
247  [out, ref] DWORD *pAuthnHint);
248 
249  [idempotent] error_status_t SimplePing(
250  [in] handle_t hRpc,
251  [in] SETID *pSetId);
252 
253  [idempotent] error_status_t ComplexPing(
254  [in] handle_t hRpc,
255  [in, out] SETID *pSetId,
256  [in] unsigned short SequenceNum,
257  [in] unsigned short cAddToSet,
258  [in] unsigned short cDelFromSet,
259  [in, unique, size_is(cAddToSet)] OID AddToSet[],
260  [in, unique, size_is(cDelFromSet)] OID DelFromSet[],
261  [out] unsigned short *pPingBackoffFactor);
262 
263  [idempotent] error_status_t ServerAlive(
264  [in] handle_t hRpc);
265 
266  [idempotent] error_status_t ResolveOxid2(
267  [in] handle_t hRpc,
268  [in] OXID *pOxid,
269  [in] unsigned short cRequestedProtseqs,
270  [in, ref, size_is(cRequestedProtseqs)] unsigned short arRequestedProtseqs[],
271  [out, ref] DUALSTRINGARRAY **ppdsaOxidBindings,
272  [out, ref] IPID *pipidRemUnknown,
273  [out, ref] DWORD *pAuthnHint,
274  [out, ref] COMVERSION *pComVersion);
275 }
276 
277 [
278  uuid(4d9f4ab8-7d1c-11cf-861e-0020af6e7c57),
280 ]
282 {
283  const unsigned long MODE_GET_CLASS_OBJECT = 0xffffffff;
284 
286  [in] handle_t hRpc,
287  [in] ORPCTHIS *ORPCthis,
288  [out] ORPCTHAT *ORPCthat,
289  [in] GUID *Clsid,
290  [in, string, unique] WCHAR *pwszObjectName,
291  [in, unique] MInterfacePointer *pObjectStorage,
292  [in] DWORD ClientImpLevel,
293  [in] DWORD Mode,
294  [in] DWORD Interfaces,
295  [in, unique, size_is(Interfaces)] IID *pIIDs,
296  [in] unsigned short cRequestedProtseqs,
297  [in, size_is(cRequestedProtseqs)] unsigned short RequestedProtseqs[],
298  [out] OXID *pOxid,
299  [out] DUALSTRINGARRAY **ppdsaOxidBindings,
300  [out] IPID *pipidRemUnknown,
301  [out] DWORD *pAuthnHint,
302  [out] COMVERSION *pServerVersion,
303  [out] HRESULT *phr,
304  [out,size_is(Interfaces)] MInterfacePointer **ppInterfaceData,
305  [out,size_is(Interfaces)] HRESULT *pResults);
306 }
error_status_t ComplexPing([in] handle_t hRpc, [in, out] SETID *pSetId, [in] unsigned short SequenceNum, [in] unsigned short cAddToSet, [in] unsigned short cDelFromSet, [in, unique, size_is(cAddToSet)] OID AddToSet[], [in, unique, size_is(cDelFromSet)] OID DelFromSet[], [out] unsigned short *pPingBackoffFactor)
GUID IPID
Definition: marshal.c:89
ULONG MinorVersion
Definition: ros_glue.cpp:5
#define OBJREF_SIGNATURE
Definition: marshal.c:77
ULONG MajorVersion
Definition: ros_glue.cpp:4
HRESULT RemQueryInterface([in] REFIPID ripid, [in] ULONG cRefs, [in] unsigned short cIids, [in, size_is(cIids)] IID *iids, [out, size_is(, cIids)] REMQIRESULT **ppQIResults)
Definition: scsiwmi.h:51
_In_ ULONG Mode
Definition: hubbusif.h:303
unsigned long cPrivateRefs
Definition: dcom.idl:198
coclass PSFactoryBuffer uuid(99fcfe60-5260-101b-bbcb-00aa0021347a)
HRESULT RemQueryInterface2([in] REFIPID ripid, [in] unsigned short cIids, [in, size_is(cIids)] IID *iids, [out, size_is(cIids)] HRESULT *phr, [out, size_is(cIids)] MInterfacePointer **ppMIF)
HRESULT RemRelease([in] unsigned short cInterfaceRefs, [in, size_is(cInterfaceRefs)] REMINTERFACEREF *InterfaceRefs)
Definition: features.h:417
coclass PSFactoryBuffer pointer_default(unique)] interface ObjectRpcBaseTypes
Definition: dcom.idl:35
Definition: send.c:47
INT64 hyper
Definition: rpcndr.h:117
HRESULT RemoteActivation([in] handle_t hRpc, [in] ORPCTHIS *ORPCthis, [out] ORPCTHAT *ORPCthat, [in] GUID *Clsid, [in, string, unique] WCHAR *pwszObjectName, [in, unique] MInterfacePointer *pObjectStorage, [in] DWORD ClientImpLevel, [in] DWORD Mode, [in] DWORD Interfaces, [in, unique, size_is(Interfaces)] IID *pIIDs, [in] unsigned short cRequestedProtseqs, [in, size_is(cRequestedProtseqs)] unsigned short RequestedProtseqs[], [out] OXID *pOxid, [out] DUALSTRINGARRAY **ppdsaOxidBindings, [out] IPID *pipidRemUnknown, [out] DWORD *pAuthnHint, [out] COMVERSION *pServerVersion, [out] HRESULT *phr, [out, size_is(Interfaces)] MInterfacePointer **ppInterfaceData, [out, size_is(Interfaces)] HRESULT *pResults)
static TfClientId cid
struct tagOBJREF OBJREF
#define NCACN_NB_IPX
Definition: rpc_defs.h:236
#define e
Definition: ke_i.h:82
GLenum GLint ref
Definition: glext.h:6028
r reserved
Definition: btrfs.c:2655
IRemUnknown * LPREMUNKNOWN
Definition: dcom.idl:188
static const WCHAR version[]
Definition: asmname.c:64
#define threading(model)
Definition: exdisp.idl:30
#define OBJREF_STANDARD
Definition: marshal.c:78
#define NCACN_NB_NB
Definition: rpc_defs.h:235
GLboolean GLboolean GLboolean b
Definition: glext.h:6204
#define NCACN_HTTP
Definition: rpc_defs.h:238
GLsizeiptr size
Definition: glext.h:5919
#define NCADG_IPX
Definition: rpc_defs.h:233
__wchar_t WCHAR
Definition: xmlstorage.h:180
IRemUnknown2 * LPREMUNKNOWN2
Definition: dcom.idl:224
LONG HRESULT
Definition: typedefs.h:77
#define NCACN_DNET_NSP
Definition: rpc_defs.h:237
error_status_t SimplePing([in] handle_t hRpc, [in] SETID *pSetId)
static FILE * out
Definition: regtests2xml.c:44
unsigned long DWORD
Definition: ntddk_ex.h:95
UINT64 OID
Definition: marshal.c:88
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl.h:1950
GLbitfield flags
Definition: glext.h:7161
const unsigned long MODE_GET_CLASS_OBJECT
Definition: dcom.idl:283
struct IRemUnknown::tagREMINTERFACEREF REMINTERFACEREF
REFCLSID clsid
Definition: msctf.c:84
error_status_t ServerAlive([in] handle_t hRpc)
unsigned char BYTE
Definition: mem.h:68
#define ID
Definition: ruserpass.c:36
char string[160]
Definition: util.h:11
#define OBJREF_CUSTOM
Definition: marshal.c:79
#define NCADG_IP_UDP
Definition: rpc_defs.h:231
#define NCACN_SPX
Definition: rpc_defs.h:234
#define NCACN_IP_TCP
Definition: rpc_defs.h:232
HRESULT RemAddRef([in] unsigned short cInterfaceRefs, [in, size_is(cInterfaceRefs)] REMINTERFACEREF *InterfaceRefs, [out, size_is(cInterfaceRefs)] HRESULT *pResults)
GLuint in
Definition: glext.h:9616
UINT64 OXID
Definition: marshal.c:87
error_status_t ResolveOxid2([in] handle_t hRpc, [in] OXID *pOxid, [in] unsigned short cRequestedProtseqs, [in, ref, size_is(cRequestedProtseqs)] unsigned short arRequestedProtseqs[], [out, ref] DUALSTRINGARRAY **ppdsaOxidBindings, [out, ref] IPID *pipidRemUnknown, [out, ref] DWORD *pAuthnHint, [out, ref] COMVERSION *pComVersion)
unsigned long error_status_t
Definition: basetyps.h:83
static SCRIPT_CACHE SCRIPT_ANALYSIS * psa
Definition: usp10.c:64
_ForwardIter unique(_ForwardIter __first, _ForwardIter __last)
Definition: _algo.h:298
unsigned int ULONG
Definition: retypes.h:1
GLenum GLuint id
Definition: glext.h:5579
struct tagSTDOBJREF STDOBJREF
struct IRemUnknown::tagREMQIRESULT REMQIRESULT
TW_UINT32 TW_UINT16 TW_UINT16 TW_MEMREF pData
Definition: twain.h:1827
error_status_t ResolveOxid([in] handle_t hRpc, [in] OXID *pOxid, [in] unsigned short cRequestedProtseqs, [in, ref, size_is(cRequestedProtseqs)] unsigned short arRequestedProtseqs[], [out, ref] DUALSTRINGARRAY **ppdsaOxidBindings, [out, ref] IPID *pipidRemUnknown, [out, ref] DWORD *pAuthnHint)
struct tagDUALSTRINGARRAY DUALSTRINGARRAY
void * object
Definition: jmemsys.h:48