source: branches/samba-3.5.x/librpc/idl/dcom.idl

Last change on this file was 414, checked in by Herwig Bauernfeind, 15 years ago

Samba 3.5.0: Initial import

File size: 6.8 KB
Line 
1/**
2 DCOM interfaces
3 http://www.ietf.org/internet-drafts/draft-brown-dcom-v1-spec-04.txt
4 */
5
6import "misc.idl";
7
8[
9 uuid("18f70770-8e64-11cf-9af1-0020af6e72f4"),
10 pointer_default(unique),
11 version(0.0)
12] interface dcom_Unknown
13{
14 void UseProtSeq();
15 void GetCustomProtseqInfo();
16 void UpdateResolverBindings();
17}
18
19[
20 object,
21 uuid("00000000-0000-0000-C000-000000000046"),
22 pointer_default(unique),
23 helpstring("Base interface for all COM interfaces")
24]
25interface IUnknown
26{
27 /*****************/
28 /* Function 0x00 */
29 /* Returns the interface with the specified IID
30 if implemented by this object */
31 [local] WERROR QueryInterface([in,unique] GUID *iid,
32 [out,iid_is(riid)] IUnknown **data);
33
34 /*****************/
35 /* Function 0x01 */
36 [local] uint32 AddRef();
37
38 /*****************/
39 /* Function 0x02 */
40 [local] uint32 Release();
41}
42
43
44[
45 object,
46 uuid("00000001-0000-0000-C000-000000000046"),
47 pointer_default(unique)
48] interface IClassFactory : IUnknown
49{
50 [local] WERROR CreateInstance([in,unique] MInterfacePointer *pUnknown,
51 [in,unique] GUID *iid,
52 [out, iid_is(riid),unique] MInterfacePointer *ppv);
53
54 [call_as(CreateInstance)] WERROR RemoteCreateInstance();
55
56 /* Set lock to TRUE when you want to do a lock
57 and set it to FALSE when you want to unlock */
58 [local] WERROR LockServer([in] uint8 lock);
59
60 [call_as(LockServer)] WERROR RemoteLockServer();
61}
62
63/* The remote version of IUnknown. This interface exists on every */
64/* OXID (whether an OXID represents either a thread or a process is */
65/* implementation specific). It is used by clients to query for new */
66/* interfaces, get additional references (for marshaling), and release */
67/* outstanding references. */
68/* This interface is passed along during OXID resolution. */
69/* */
70[
71 uuid("00000131-0000-0000-C000-000000000046"),
72 object,
73 pointer_default(unique),
74 helpstring("Remote version of IUnknown")
75]
76interface IRemUnknown : IUnknown
77{
78 typedef [public] struct
79 {
80 WERROR hResult; /* result of call */
81 STDOBJREF std; /* data for returned interface */
82 }
83 REMQIRESULT;
84
85 [call_as(QueryInterface)] WERROR RemQueryInterface (
86 [in,unique] GUID *ripid, /* interface to QI on */
87 [in] uint32 cRefs, /* count of AddRefs requested */
88 [in] uint16 cIids, /* count of IIDs that follow */
89 [in, unique, size_is(cIids)] GUID *iids, /* IIDs to QI for */
90 [out, size_is(cIids), unique] MInterfacePointer *ip
91 );
92
93 typedef struct
94 {
95 GUID ipid; /* ipid to AddRef/Release */
96 uint32 cPublicRefs;
97 uint32 cPrivateRefs;
98 } REMINTERFACEREF;
99
100 [call_as(AddRef)] WERROR RemAddRef (
101 [in] uint16 cInterfaceRefs,
102 [in, size_is(cInterfaceRefs)] REMINTERFACEREF InterfaceRefs[],
103 [out, size_is(cInterfaceRefs), unique] WERROR *pResults
104 );
105
106 [call_as(Release)] WERROR RemRelease (
107 [in] uint16 cInterfaceRefs,
108 [in, size_is(cInterfaceRefs)] REMINTERFACEREF InterfaceRefs[]
109 );
110}
111
112[
113 uuid("00000140-0000-0000-c000-000000000046"),
114 object
115] interface IClassActivator : IUnknown
116{
117 void GetClassObject([in] GUID clsid,
118 [in] uint32 context,
119 [in] uint32 locale,
120 [in] GUID iid,
121 [out, iid_is(iid)] MInterfacePointer *data);
122}
123
124[
125 uuid("00000136-0000-0000-c000-000000000046"),
126 pointer_default(unique),
127 object
128] interface ISCMLocalActivator : IClassActivator
129{
130 WERROR ISCMLocalActivator_CreateInstance( );
131}
132
133[
134 pointer_default(unique),
135 uuid("c6f3ee72-ce7e-11d1-b71e-00c04fc3111a")
136] interface IMachineLocalActivator
137{
138 WERROR IMachineLocalActivator_foo();
139}
140
141[
142 pointer_default(unique),
143 uuid("e60c73e6-88f9-11cf-9af1-0020af6e72f4")
144] interface ILocalObjectExporter
145{
146 WERROR ILocalObjectExporter_Foo();
147}
148
149/* Looks like this is the equivalent of .NET's
150 System.Activator class */
151[
152 uuid("000001a0-0000-0000-c000-000000000046"),
153 object
154]
155 interface ISystemActivator : IClassActivator
156{
157 WERROR ISystemActivatorRemoteCreateInstance([in] hyper unknown1, /* OXID ? */
158 [in] MInterfacePointer iface1,
159 [in] hyper unknown2,
160 [out] uint32 *unknown3,
161 [out] MInterfacePointer *iface2);
162}
163
164
165
166/* Derived from IRemUnknown, this interface supports Remote Query interface */
167/* for objects that supply additional data beyond the STDOBJREF in their */
168/* marshaled interface packets. */
169[
170 object,
171 pointer_default(unique),
172 uuid("00000143-0000-0000-C000-000000000046")
173]
174
175interface IRemUnknown2 : IRemUnknown
176{
177 [call_as(QueryInterface2)] WERROR RemQueryInterface2 (
178 [in, unique] GUID *ripid,
179 [in] uint16 cIids,
180 [in, size_is(cIids), unique] GUID *iids,
181 [out, size_is(cIids), unique] WERROR *phr,
182 [out, size_is(cIids), unique] MInterfacePointer *ppMIF
183 );
184}
185
186[
187 object,
188 pointer_default(unique),
189 uuid("00020400-0000-0000-C000-000000000046")
190] interface IDispatch : IUnknown
191{
192 /*****************/
193 /* Function 0x03 */
194 WERROR GetTypeInfoCount(
195 [out, unique] uint16 *pctinfo);
196
197 typedef struct {
198 } REF_ITypeInfo;
199
200 /*****************/
201 /* Function 0x04 */
202 WERROR GetTypeInfo (
203 [in] uint16 iTInfo,
204 [in] uint32 lcid,
205 [out, unique] REF_ITypeInfo *ppTInfo);
206
207 /*****************/
208 /* Function 0x05 */
209 WERROR GetIDsOfNames(
210 [in, unique] GUID *riid,
211 /*FIXME[in,size_is(cNames)] OLESTR *rgszNames[], */
212 [in] uint16 cNames,
213 [in] uint32 lcid,
214 [out,size_is(cNames), unique] uint32 *rgDispId);
215
216 typedef struct {
217 uint16 vartype;
218 uint16 FIXME;
219 } VARIANT;
220
221 typedef struct {
222 uint16 FIXME;
223 } DISPPARAMS;
224
225 /* Exception ? */
226 typedef struct {
227 uint16 FIXME;
228 } EXCEPINFO;
229
230 /*****************/
231 /* Function 0x06 */
232 WERROR Invoke(
233 [in] uint32 dispIdMember,
234 [in, unique] GUID *riid,
235 [in] uint32 lcid,
236 [in] uint16 wFlags,
237 [out,in, unique] DISPPARAMS *pDispParams,
238 [out, unique] VARIANT *pVarResult,
239 [out, unique] EXCEPINFO *pExcepInfo,
240 [out, unique] uint16 *puArgErr);
241}
242
243[
244 object,
245 local,
246 uuid("00000003-0000-0000-C000-000000000046")
247] interface IMarshal : IUnknown
248{
249 WERROR MarshalInterface();
250 WERROR UnMarshalInterface();
251}
252
253[
254 uuid(DA23F6DB-6F45-466C-9EED-0B65286F2D78),
255 helpstring("ICoffeeMachine Interface"),
256 pointer_default(unique),
257 object
258] interface ICoffeeMachine : IUnknown
259{
260 WERROR MakeCoffee([in,string,charset(UTF16)] uint16 *flavor);
261}
262
263[
264 uuid("db7c21f8-fe33-4c11-aea5-ceb56f076fbb"),
265 helpstring("coffeemachine class")
266] coclass coffeemachine
267{
268 interface icoffeemachine;
269}
270
271[
272 object,
273 uuid("0000000C-0000-0000-C000-000000000046"),
274 helpstring("Stream")
275]
276interface IStream : IUnknown
277{
278 WERROR Read(
279 [out, size_is(num_requested), length_is(*num_read)] uint8 pv[],
280 [in] uint32 num_requested,
281 [in, unique] uint32 *num_readx,
282 [out] uint32 *num_read
283 );
284
285 WERROR Write(
286 [in,size_is(num_requested),unique] uint8 *data,
287 [in] uint32 num_requested,
288 [out] uint32 *num_written);
289}
290
291[
292 uuid("5e9ddec7-5767-11cf-beab-00aa006c3606"),
293 progid("Samba.Simple"),
294 helpstring("simple class"),
295 internal
296] coclass simple
297{
298 interface IStream;
299}
Note: See TracBrowser for help on using the repository browser.