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