wiaservc: Add the class factory and IWiaDevMgr stubs.
[wine/hramrach.git] / dlls / ole32 / dcom.idl
bloba1c0dcd568942d2ce0b49d9f35a04bc1b5f0b6c0
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 uuid(99fcfe60-5260-101b-bbcb-00aa0021347a),
26 pointer_default(unique)
28 interface ObjectRpcBaseTypes
30 typedef unsigned hyper ID;
31 typedef ID MID;
32 typedef ID OXID;
33 typedef ID OID;
34 typedef ID SETID;
35 typedef GUID IPID;
36 typedef GUID CID;
37 typedef REFGUID REFIPID;
39 const unsigned short COM_MINOR_VERSION_1 = 1;
40 const unsigned short COM_MINOR_VERSION_2 = 2;
42 const unsigned short COM_MAJOR_VERSION = 5;
43 const unsigned short COM_MINOR_VERSION = 3;
45 typedef struct tagCOMVERSION {
46 unsigned short MajorVersion;
47 unsigned short MinorVersion;
48 } COMVERSION;
50 const unsigned long ORPCF_NULL = 0;
51 const unsigned long ORPCF_LOCAL = 1;
52 const unsigned long ORPCF_RESERVED1 = 2;
53 const unsigned long ORPCF_RESERVED2 = 4;
54 const unsigned long ORPCF_RESERVED3 = 8;
55 const unsigned long ORPCF_RESERVED4 = 16;
57 typedef struct tagORPC_EXTENT {
58 GUID id;
59 unsigned long size;
60 [size_is((size+7)&~7)] byte data[];
61 } ORPC_EXTENT;
63 typedef struct tagORPC_EXTENT_ARRAY {
64 unsigned long size;
65 unsigned long reserved;
66 [size_is((size+1)&~1,), unique] ORPC_EXTENT **extent;
67 } ORPC_EXTENT_ARRAY;
69 typedef struct tagORPCTHIS {
70 COMVERSION version;
71 unsigned long flags;
72 unsigned long reserved1;
73 CID cid;
74 [unique] ORPC_EXTENT_ARRAY *extensions;
75 } ORPCTHIS;
77 typedef struct tagORPCTHAT {
78 unsigned long flags;
79 [unique] ORPC_EXTENT_ARRAY *extensions;
80 } ORPCTHAT;
82 const unsigned short NCADG_IP_UDP = 0x08;
83 const unsigned short NCACN_IP_TCP = 0x07;
84 const unsigned short NCADG_IPX = 0x0E;
85 const unsigned short NCACN_SPX = 0x0C;
86 const unsigned short NCACN_NB_NB = 0x12;
87 const unsigned short NCACN_NB_IPX = 0x0D;
88 const unsigned short NCACN_DNET_NSP = 0x04;
89 const unsigned short NCACN_HTTP = 0x1F;
91 typedef struct tagSTRINGBINDING {
92 unsigned short wTowerId;
93 [string] WCHAR aNetworkAddr[];
94 } STRINGBINDING;
96 const unsigned short COM_C_AUTHZ_NONE = 0xffff;
98 typedef struct tagSECURITYBINDING {
99 unsigned short wAuthnSvc;
100 unsigned short wAuthzSvc;
101 [string] WCHAR aPrincName[];
102 } SECURITYBINDING;
104 typedef struct tagDUALSTRINGARRAY {
105 unsigned short wNumEntries;
106 unsigned short wSecurityOffset;
107 [size_is(wNumEntries)] unsigned short aStringArray[];
108 } DUALSTRINGARRAY;
110 typedef struct tagOXID_INFO {
111 DWORD dwTid;
112 DWORD dwPid;
113 IPID ipidRemUnknown;
114 DWORD dwAuthnHint;
115 DUALSTRINGARRAY *psa;
116 } OXID_INFO;
118 const unsigned long OBJREF_SIGNATURE = 0x574f454d; /* "MEOW" */
119 const unsigned long OBJREF_STANDARD = 0x1;
120 const unsigned long OBJREF_HANDLER = 0x2;
121 const unsigned long OBJREF_CUSTOM = 0x4;
122 const unsigned long SORF_OXRES1 = 0x1;
123 const unsigned long SORF_OXRES2 = 0x20;
124 const unsigned long SORF_OXRES3 = 0x40;
125 const unsigned long SORF_OXRES4 = 0x80;
126 const unsigned long SORF_OXRES5 = 0x100;
127 const unsigned long SORF_OXRES6 = 0x200;
128 const unsigned long SORF_OXRES7 = 0x400;
129 const unsigned long SORF_OXRES8 = 0x800;
130 const unsigned long SORF_NULL = 0x0;
131 const unsigned long SORF_NOPING = 0x1000;
133 typedef struct tagSTDOBJREF {
134 unsigned long flags;
135 unsigned long cPublicRefs;
136 OXID oxid;
137 OID oid;
138 IPID ipid;
139 } STDOBJREF;
141 typedef struct tagOBJREF {
142 unsigned long signature;
143 unsigned long flags;
144 GUID iid;
145 [switch_is(flags)] union {
146 [case(OBJREF_STANDARD)] struct OR_STANDARD {
147 STDOBJREF std;
148 DUALSTRINGARRAY saResAddr;
149 } u_standard;
150 [case(OBJREF_HANDLER)] struct OR_HANDLER {
151 STDOBJREF std;
152 CLSID clsid;
153 DUALSTRINGARRAY saResAddr;
154 } u_handler;
155 [case(OBJREF_CUSTOM)] struct OR_CUSTOM {
156 CLSID clsid;
157 unsigned long cbExtension;
158 ULONG size;
159 [size_is(size), ref] byte *pData;
160 } u_custom;
161 } u_objref;
162 } OBJREF;
164 typedef struct tagMInterfacePointer {
165 ULONG ulCntData;
166 [size_is(ulCntData)] BYTE abData[];
167 } MInterfacePointer;
169 typedef [unique] MInterfacePointer *PMInterfacePointer;
171 } /* interface ObjectRpcBaseTypes */
174 object,
175 uuid(00000131-0000-0000-C000-000000000046)
177 interface IRemUnknown : IUnknown
179 typedef [unique] IRemUnknown *LPREMUNKNOWN;
181 typedef struct tagREMQIRESULT {
182 HRESULT hResult;
183 STDOBJREF std;
184 } REMQIRESULT;
186 typedef struct tagREMINTERFACEREF {
187 IPID ipid;
188 unsigned long cPublicRefs;
189 unsigned long cPrivateRefs;
190 } REMINTERFACEREF;
192 HRESULT RemQueryInterface(
193 [in] REFIPID ripid,
194 [in] ULONG cRefs,
195 [in] unsigned short cIids,
196 [in, size_is(cIids)] IID *iids,
197 [out, size_is(,cIids)] REMQIRESULT **ppQIResults);
199 HRESULT RemAddRef(
200 [in] unsigned short cInterfaceRefs,
201 [in, size_is(cInterfaceRefs)] REMINTERFACEREF* InterfaceRefs,
202 [out, size_is(cInterfaceRefs)] HRESULT *pResults);
204 HRESULT RemRelease(
205 [in] unsigned short cInterfaceRefs,
206 [in, size_is(cInterfaceRefs)] REMINTERFACEREF* InterfaceRefs);
210 object,
211 uuid(00000142-0000-0000-C000-000000000046)
213 interface IRemUnknown2 : IRemUnknown
215 typedef [unique] IRemUnknown2 *LPREMUNKNOWN2;
217 HRESULT RemQueryInterface2(
218 [in] REFIPID ripid,
219 [in] unsigned short cIids,
220 [in, size_is(cIids)] IID *iids,
221 [out, size_is(cIids)] HRESULT *phr,
222 [out, size_is(cIids)] MInterfacePointer **ppMIF);
226 uuid(99fcfec4-5260-101b-bbcb-00aa0021347a),
227 pointer_default(unique)
229 interface IOXIDResolver
231 [idempotent] error_status_t ResolveOxid(
232 [in] handle_t hRpc,
233 [in] OXID *pOxid,
234 [in] unsigned short cRequestedProtseqs,
235 [in, ref, size_is(cRequestedProtseqs)] unsigned short arRequestedProtseqs[],
236 [out, ref] DUALSTRINGARRAY **ppdsaOxidBindings,
237 [out, ref] IPID *pipidRemUnknown,
238 [out, ref] DWORD *pAuthnHint);
240 [idempotent] error_status_t SimplePing(
241 [in] handle_t hRpc,
242 [in] SETID *pSetId);
244 [idempotent] error_status_t ComplexPing(
245 [in] handle_t hRpc,
246 [in, out] SETID *pSetId,
247 [in] unsigned short SequenceNum,
248 [in] unsigned short cAddToSet,
249 [in] unsigned short cDelFromSet,
250 [in, unique, size_is(cAddToSet)] OID AddToSet[],
251 [in, unique, size_is(cDelFromSet)] OID DelFromSet[],
252 [out] unsigned short *pPingBackoffFactor);
254 [idempotent] error_status_t ServerAlive(
255 [in] handle_t hRpc);
257 [idempotent] error_status_t ResolveOxid2(
258 [in] handle_t hRpc,
259 [in] OXID *pOxid,
260 [in] unsigned short cRequestedProtseqs,
261 [in, ref, size_is(cRequestedProtseqs)] unsigned short arRequestedProtseqs[],
262 [out, ref] DUALSTRINGARRAY **ppdsaOxidBindings,
263 [out, ref] IPID *pipidRemUnknown,
264 [out, ref] DWORD *pAuthnHint,
265 [out, ref] COMVERSION *pComVersion);
269 uuid(4d9f4ab8-7d1c-11cf-861e-0020af6e7c57),
270 pointer_default(unique)
272 interface IRemoteActivation
274 const unsigned long MODE_GET_CLASS_OBJECT = 0xffffffff;
276 HRESULT RemoteActivation(
277 [in] handle_t hRpc,
278 [in] ORPCTHIS *ORPCthis,
279 [out] ORPCTHAT *ORPCthat,
280 [in] GUID *Clsid,
281 [in, string, unique] WCHAR *pwszObjectName,
282 [in, unique] MInterfacePointer *pObjectStorage,
283 [in] DWORD ClientImpLevel,
284 [in] DWORD Mode,
285 [in] DWORD Interfaces,
286 [in, unique, size_is(Interfaces)] IID *pIIDs,
287 [in] unsigned short cRequestedProtseqs,
288 [in, size_is(cRequestedProtseqs)] unsigned short RequestedProtseqs[],
289 [out] OXID *pOxid,
290 [out] DUALSTRINGARRAY **ppdsaOxidBindings,
291 [out] IPID *pipidRemUnknown,
292 [out] DWORD *pAuthnHint,
293 [out] COMVERSION *pServerVersion,
294 [out] HRESULT *phr,
295 [out,size_is(Interfaces)] MInterfacePointer **ppInterfaceData,
296 [out,size_is(Interfaces)] HRESULT *pResults);