jscript: Use bytecode for '<<' expression implementation.
[wine/multimedia.git] / dlls / ole32 / dcom.idl
blob4517b46d87185b512f0665106395669627f35919
1 /*
2 * Copyright 2003 Ove Kåven, TransGaming Technologies
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.
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.
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
19 /* see the official DCOM specification
20 * (there's a copy at http://www.grimes.demon.co.uk/DCOM/DCOMSpec.htm) */
22 import "unknwn.idl";
25 threading(both),
26 uuid(00000320-0000-0000-c000-000000000046)
28 coclass PSFactoryBuffer { interface IFactoryBuffer; }
31 uuid(99fcfe60-5260-101b-bbcb-00aa0021347a),
32 pointer_default(unique)
34 interface ObjectRpcBaseTypes
36 typedef unsigned hyper ID;
37 typedef ID MID;
38 typedef ID OXID;
39 typedef ID OID;
40 typedef ID SETID;
41 typedef GUID IPID;
42 typedef GUID CID;
43 typedef REFGUID REFIPID;
45 const unsigned short COM_MINOR_VERSION_1 = 1;
46 const unsigned short COM_MINOR_VERSION_2 = 2;
48 const unsigned short COM_MAJOR_VERSION = 5;
49 const unsigned short COM_MINOR_VERSION = 3;
51 typedef struct tagCOMVERSION {
52 unsigned short MajorVersion;
53 unsigned short MinorVersion;
54 } COMVERSION;
56 const unsigned long ORPCF_NULL = 0;
57 const unsigned long ORPCF_LOCAL = 1;
58 const unsigned long ORPCF_RESERVED1 = 2;
59 const unsigned long ORPCF_RESERVED2 = 4;
60 const unsigned long ORPCF_RESERVED3 = 8;
61 const unsigned long ORPCF_RESERVED4 = 16;
63 typedef struct tagORPC_EXTENT {
64 GUID id;
65 unsigned long size;
66 [size_is((size+7)&~7)] byte data[];
67 } ORPC_EXTENT;
69 typedef struct tagORPC_EXTENT_ARRAY {
70 unsigned long size;
71 unsigned long reserved;
72 [size_is((size+1)&~1,), unique] ORPC_EXTENT **extent;
73 } ORPC_EXTENT_ARRAY;
75 typedef struct tagORPCTHIS {
76 COMVERSION version;
77 unsigned long flags;
78 unsigned long reserved1;
79 CID cid;
80 [unique] ORPC_EXTENT_ARRAY *extensions;
81 } ORPCTHIS;
83 typedef struct tagORPCTHAT {
84 unsigned long flags;
85 [unique] ORPC_EXTENT_ARRAY *extensions;
86 } ORPCTHAT;
88 const unsigned short NCADG_IP_UDP = 0x08;
89 const unsigned short NCACN_IP_TCP = 0x07;
90 const unsigned short NCADG_IPX = 0x0E;
91 const unsigned short NCACN_SPX = 0x0C;
92 const unsigned short NCACN_NB_NB = 0x12;
93 const unsigned short NCACN_NB_IPX = 0x0D;
94 const unsigned short NCACN_DNET_NSP = 0x04;
95 const unsigned short NCACN_HTTP = 0x1F;
97 typedef struct tagSTRINGBINDING {
98 unsigned short wTowerId;
99 [string] WCHAR aNetworkAddr[];
100 } STRINGBINDING;
102 const unsigned short COM_C_AUTHZ_NONE = 0xffff;
104 typedef struct tagSECURITYBINDING {
105 unsigned short wAuthnSvc;
106 unsigned short wAuthzSvc;
107 [string] WCHAR aPrincName[];
108 } SECURITYBINDING;
110 typedef struct tagDUALSTRINGARRAY {
111 unsigned short wNumEntries;
112 unsigned short wSecurityOffset;
113 [size_is(wNumEntries)] unsigned short aStringArray[];
114 } DUALSTRINGARRAY;
116 typedef struct tagOXID_INFO {
117 DWORD dwTid;
118 DWORD dwPid;
119 IPID ipidRemUnknown;
120 DWORD dwAuthnHint;
121 DUALSTRINGARRAY *psa;
122 } OXID_INFO;
124 const unsigned long OBJREF_SIGNATURE = 0x574f454d; /* "MEOW" */
125 const unsigned long OBJREF_STANDARD = 0x1;
126 const unsigned long OBJREF_HANDLER = 0x2;
127 const unsigned long OBJREF_CUSTOM = 0x4;
128 const unsigned long SORF_OXRES1 = 0x1;
129 const unsigned long SORF_OXRES2 = 0x20;
130 const unsigned long SORF_OXRES3 = 0x40;
131 const unsigned long SORF_OXRES4 = 0x80;
132 const unsigned long SORF_OXRES5 = 0x100;
133 const unsigned long SORF_OXRES6 = 0x200;
134 const unsigned long SORF_OXRES7 = 0x400;
135 const unsigned long SORF_OXRES8 = 0x800;
136 const unsigned long SORF_NULL = 0x0;
137 const unsigned long SORF_NOPING = 0x1000;
139 typedef struct tagSTDOBJREF {
140 unsigned long flags;
141 unsigned long cPublicRefs;
142 OXID oxid;
143 OID oid;
144 IPID ipid;
145 } STDOBJREF;
147 typedef struct tagOBJREF {
148 unsigned long signature;
149 unsigned long flags;
150 GUID iid;
151 [switch_is(flags)] union {
152 [case(OBJREF_STANDARD)] struct OR_STANDARD {
153 STDOBJREF std;
154 DUALSTRINGARRAY saResAddr;
155 } u_standard;
156 [case(OBJREF_HANDLER)] struct OR_HANDLER {
157 STDOBJREF std;
158 CLSID clsid;
159 DUALSTRINGARRAY saResAddr;
160 } u_handler;
161 [case(OBJREF_CUSTOM)] struct OR_CUSTOM {
162 CLSID clsid;
163 unsigned long cbExtension;
164 ULONG size;
165 [size_is(size), ref] byte *pData;
166 } u_custom;
167 } u_objref;
168 } OBJREF;
170 typedef struct tagMInterfacePointer {
171 ULONG ulCntData;
172 [size_is(ulCntData)] BYTE abData[];
173 } MInterfacePointer;
175 typedef [unique] MInterfacePointer *PMInterfacePointer;
177 } /* interface ObjectRpcBaseTypes */
180 object,
181 uuid(00000131-0000-0000-C000-000000000046)
183 interface IRemUnknown : IUnknown
185 typedef [unique] IRemUnknown *LPREMUNKNOWN;
187 typedef struct tagREMQIRESULT {
188 HRESULT hResult;
189 STDOBJREF std;
190 } REMQIRESULT;
192 typedef struct tagREMINTERFACEREF {
193 IPID ipid;
194 unsigned long cPublicRefs;
195 unsigned long cPrivateRefs;
196 } REMINTERFACEREF;
198 HRESULT RemQueryInterface(
199 [in] REFIPID ripid,
200 [in] ULONG cRefs,
201 [in] unsigned short cIids,
202 [in, size_is(cIids)] IID *iids,
203 [out, size_is(,cIids)] REMQIRESULT **ppQIResults);
205 HRESULT RemAddRef(
206 [in] unsigned short cInterfaceRefs,
207 [in, size_is(cInterfaceRefs)] REMINTERFACEREF* InterfaceRefs,
208 [out, size_is(cInterfaceRefs)] HRESULT *pResults);
210 HRESULT RemRelease(
211 [in] unsigned short cInterfaceRefs,
212 [in, size_is(cInterfaceRefs)] REMINTERFACEREF* InterfaceRefs);
216 object,
217 uuid(00000142-0000-0000-C000-000000000046)
219 interface IRemUnknown2 : IRemUnknown
221 typedef [unique] IRemUnknown2 *LPREMUNKNOWN2;
223 HRESULT RemQueryInterface2(
224 [in] REFIPID ripid,
225 [in] unsigned short cIids,
226 [in, size_is(cIids)] IID *iids,
227 [out, size_is(cIids)] HRESULT *phr,
228 [out, size_is(cIids)] MInterfacePointer **ppMIF);
232 uuid(99fcfec4-5260-101b-bbcb-00aa0021347a),
233 pointer_default(unique)
235 interface IOXIDResolver
237 [idempotent] error_status_t ResolveOxid(
238 [in] handle_t hRpc,
239 [in] OXID *pOxid,
240 [in] unsigned short cRequestedProtseqs,
241 [in, ref, size_is(cRequestedProtseqs)] unsigned short arRequestedProtseqs[],
242 [out, ref] DUALSTRINGARRAY **ppdsaOxidBindings,
243 [out, ref] IPID *pipidRemUnknown,
244 [out, ref] DWORD *pAuthnHint);
246 [idempotent] error_status_t SimplePing(
247 [in] handle_t hRpc,
248 [in] SETID *pSetId);
250 [idempotent] error_status_t ComplexPing(
251 [in] handle_t hRpc,
252 [in, out] SETID *pSetId,
253 [in] unsigned short SequenceNum,
254 [in] unsigned short cAddToSet,
255 [in] unsigned short cDelFromSet,
256 [in, unique, size_is(cAddToSet)] OID AddToSet[],
257 [in, unique, size_is(cDelFromSet)] OID DelFromSet[],
258 [out] unsigned short *pPingBackoffFactor);
260 [idempotent] error_status_t ServerAlive(
261 [in] handle_t hRpc);
263 [idempotent] error_status_t ResolveOxid2(
264 [in] handle_t hRpc,
265 [in] OXID *pOxid,
266 [in] unsigned short cRequestedProtseqs,
267 [in, ref, size_is(cRequestedProtseqs)] unsigned short arRequestedProtseqs[],
268 [out, ref] DUALSTRINGARRAY **ppdsaOxidBindings,
269 [out, ref] IPID *pipidRemUnknown,
270 [out, ref] DWORD *pAuthnHint,
271 [out, ref] COMVERSION *pComVersion);
275 uuid(4d9f4ab8-7d1c-11cf-861e-0020af6e7c57),
276 pointer_default(unique)
278 interface IRemoteActivation
280 const unsigned long MODE_GET_CLASS_OBJECT = 0xffffffff;
282 HRESULT RemoteActivation(
283 [in] handle_t hRpc,
284 [in] ORPCTHIS *ORPCthis,
285 [out] ORPCTHAT *ORPCthat,
286 [in] GUID *Clsid,
287 [in, string, unique] WCHAR *pwszObjectName,
288 [in, unique] MInterfacePointer *pObjectStorage,
289 [in] DWORD ClientImpLevel,
290 [in] DWORD Mode,
291 [in] DWORD Interfaces,
292 [in, unique, size_is(Interfaces)] IID *pIIDs,
293 [in] unsigned short cRequestedProtseqs,
294 [in, size_is(cRequestedProtseqs)] unsigned short RequestedProtseqs[],
295 [out] OXID *pOxid,
296 [out] DUALSTRINGARRAY **ppdsaOxidBindings,
297 [out] IPID *pipidRemUnknown,
298 [out] DWORD *pAuthnHint,
299 [out] COMVERSION *pServerVersion,
300 [out] HRESULT *phr,
301 [out,size_is(Interfaces)] MInterfacePointer **ppInterfaceData,
302 [out,size_is(Interfaces)] HRESULT *pResults);