r5476: Move ORPC extensions to DCE/RPC into seperate file.
[Samba/gebeck_regimport.git] / source4 / librpc / idl / dcom.idl
blob099cb0d74df0551b9fb00bb958172ec90367241b
1 #include "idl_types.h"
3 /**
4 DCOM interfaces
5 http://www.grimes.demon.co.uk/DCOM/DCOMSpec.htm
6 */
8 #define OLESTR unistr
11 uuid("18f70770-8e64-11cf-9af1-0020af6e72f4"),
12 pointer_default(unique),
13 version(0.0)
14 ] interface dcom_Unknown
16 void UseProtSeq();
17 void GetCustomProtseqInfo();
18 void UpdateResolverBindings();
22 object,
23 uuid("00000000-0000-0000-C000-000000000046"),
24 pointer_default(unique),
25 helpstring("Base interface for all COM interfaces")
27 interface IUnknown
29 /*****************/
30 /* Function 0x00 */
31 /* Returns the interface with the specified IID
32 if implemented by this object */
33 [local] WERROR QueryInterface([in] GUID *iid,
34 [out,iid_is(riid)] MInterfacePointer *data);
36 /*****************/
37 /* Function 0x01 */
38 [local] uint32 AddRef();
40 /*****************/
41 /* Function 0x02 */
42 [local] uint32 Release();
47 object,
48 uuid("00000001-0000-0000-C000-000000000046"),
49 pointer_default(unique)
50 ] interface IClassFactory : IUnknown
52 [local] WERROR CreateInstance([in] MInterfacePointer *pUnknown,
53 [in] GUID *iid,
54 [out, iid_is(riid)] MInterfacePointer *ppv);
56 [call_as(CreateInstance)] WERROR RemoteCreateInstance();
58 /* Set lock to TRUE when you want to do a lock
59 and set it to FALSE when you want to unlock */
60 [local] WERROR LockServer([in] uint8 lock);
62 [call_as(LockServer)] WERROR RemoteLockServer();
65 /* The remote version of IUnknown. This interface exists on every */
66 /* OXID (whether an OXID represents either a thread or a process is */
67 /* implementation specific). It is used by clients to query for new */
68 /* interfaces, get additional references (for marshaling), and release */
69 /* outstanding references. */
70 /* This interface is passed along during OXID resolution. */
71 /* */
73 uuid("00000131-0000-0000-C000-000000000046"),
74 object,
75 pointer_default(unique),
76 helpstring("Remote version of IUnknown")
78 interface IRemUnknown : IUnknown
80 typedef [public] struct
82 WERROR hResult; /* result of call */
83 STDOBJREF std; /* data for returned interface */
85 REMQIRESULT;
87 [call_as(QueryInterface)] WERROR RemQueryInterface (
88 [in] GUID *ripid, /* interface to QI on */
89 [in] uint32 cRefs, /* count of AddRefs requested */
90 [in] uint16 cIids, /* count of IIDs that follow */
91 [in, size_is(cIids)] GUID* iids, /* IIDs to QI for */
92 [out, size_is(cIids)] MInterfacePointer *ip
95 typedef struct
97 GUID ipid; /* ipid to AddRef/Release */
98 uint32 cPublicRefs;
99 uint32 cPrivateRefs;
100 } REMINTERFACEREF;
102 [call_as(AddRef)] WERROR RemAddRef (
103 [in] uint16 cInterfaceRefs,
104 [in, size_is(cInterfaceRefs)] REMINTERFACEREF InterfaceRefs[],
105 [out, size_is(cInterfaceRefs)] WERROR* pResults
108 [call_as(Release)] WERROR RemRelease (
109 [in] uint16 cInterfaceRefs,
110 [in, size_is(cInterfaceRefs)] REMINTERFACEREF InterfaceRefs[]
115 uuid("00000140-0000-0000-c000-000000000046"),
116 pointer_default(unique),
117 object
118 ] interface IClassActivator : IUnknown
120 void GetClassObject([in] GUID clsid,
121 [in] uint32 context,
122 [in] uint32 locale,
123 [in] GUID iid,
124 [out, iid_is(iid)] MInterfacePointer data);
128 uuid("00000136-0000-0000-c000-000000000046"),
129 pointer_default(unique),
130 object
131 ] interface ISCMLocalActivator : IClassActivator
133 WERROR ISCMLocalActivator_CreateInstance( );
137 pointer_default(unique),
138 uuid("c6f3ee72-ce7e-11d1-b71e-00c04fc3111a")
139 ] interface IMachineLocalActivator
141 WERROR IMachineLocalActivator_foo();
145 pointer_default(unique),
146 uuid("e60c73e6-88f9-11cf-9af1-0020af6e72f4")
147 ] interface ILocalObjectExporter
149 WERROR ILocalObjectExporter_Foo();
152 /* Looks like this is the equivalent of .NET's
153 System.Activator class */
155 uuid("000001a0-0000-0000-c000-000000000046"),
156 pointer_default(unique),
157 object
159 interface ISystemActivator : IClassActivator
161 WERROR ISystemActivatorRemoteCreateInstance([in] hyper unknown1, /* OXID ? */
162 [in] MInterfacePointer iface,
163 [in] hyper unknown2,
164 [out] uint32 unknown3,
165 [out] MInterfacePointer iface);
170 /* Derived from IRemUnknown, this interface supports Remote Query interface */
171 /* for objects that supply additional data beyond the STDOBJREF in their */
172 /* marshaled interface packets. */
174 object,
175 pointer_default(unique),
176 uuid("00000143-0000-0000-C000-000000000046")
179 interface IRemUnknown2 : IRemUnknown
181 [call_as(QueryInterface2)] WERROR RemQueryInterface2 (
182 [in] GUID *ripid,
183 [in] uint16 cIids,
184 [in, size_is(cIids)] GUID*iids,
185 [out, size_is(cIids)] WERROR *phr,
186 [out, size_is(cIids)] MInterfacePointer *ppMIF
191 object,
192 pointer_default(unique),
193 uuid("00000136-0000-0000-C000-000000000046")
194 ] interface ISCMActivator : IClassActivator
196 WERROR SCMActivator_CreateInstance();
200 object,
201 pointer_default(unique),
202 uuid("00020400-0000-0000-C000-000000000046")
203 ] interface IDispatch : IUnknown
205 /*****************/
206 /* Function 0x03 */
207 WERROR GetTypeInfoCount(
208 [out] uint16 *pctinfo);
210 typedef struct {
211 } REF_ITypeInfo;
213 /*****************/
214 /* Function 0x04 */
215 WERROR GetTypeInfo (
216 [in] uint16 iTInfo,
217 [in] uint32 lcid,
218 [out] REF_ITypeInfo *ppTInfo);
220 /*****************/
221 /* Function 0x05 */
222 WERROR GetIDsOfNames(
223 [in] GUID *riid,
224 /*FIXME[in,size_is(cNames)] OLESTR *rgszNames[], */
225 [in] uint16 cNames,
226 [in] uint32 lcid,
227 [out,size_is(cNames)] uint32 *rgDispId);
229 typedef struct {
230 uint16 vartype;
231 uint16 FIXME;
232 } VARIANT;
234 typedef struct {
235 uint16 FIXME;
236 } DISPPARAMS;
238 /* Exception ? */
239 typedef struct {
240 uint16 FIXME;
241 } EXCEPINFO;
243 /*****************/
244 /* Function 0x06 */
245 WERROR Invoke(
246 [in] uint32 dispIdMember,
247 [in] GUID *riid,
248 [in] uint32 lcid,
249 [in] uint16 wFlags,
250 [out,in] DISPPARAMS *pDispParams,
251 [out] VARIANT *pVarResult,
252 [out] EXCEPINFO *pExcepInfo,
253 [out] uint16 *puArgErr);
257 object,
258 local,
259 uuid("00000003-0000-0000-C000-000000000046")
260 ] interface IMarshal : IUnknown
262 WERROR MarshalInterface();
263 WERROR UnMarshalInterface();
267 uuid(DB7C21F8-FE33-4C11-AEA5-CEB56F076FBB),
268 helpstring("CoffeeMachine Class")
269 ] coclass CoffeeMachine
272 uuid(DA23F6DB-6F45-466C-9EED-0B65286F2D78),
273 helpstring("ICoffeeMachine Interface"),
274 pointer_default(unique)
277 interface ICoffeeMachine : IUnknown
279 [helpstring("method MakeCoffee")] HRESULT MakeCoffee(BSTR *flavor);
284 object,
285 pointer_default(unique),
286 uuid("0000000C-0000-0000-C000-000000000046"),
287 helpstring("Stream")
289 interface IStream : IUnknown
291 WERROR Read(
292 [out, size_is(num_requested), length_is(num_read)] uint8 pv[],
293 [in] uint32 num_requested,
294 [in] uint32 *num_readx,
295 [out] uint32 num_read
298 WERROR Write(
299 [in,size_is(num_requested)] uint8 *data,
300 [in] uint32 num_requested,
301 [out] uint32 num_written);