1 | /**
|
---|
2 | DCOM interfaces
|
---|
3 | http://www.ietf.org/internet-drafts/draft-brown-dcom-v1-spec-04.txt
|
---|
4 | */
|
---|
5 |
|
---|
6 | import "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 | ]
|
---|
25 | interface 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 | ]
|
---|
76 | interface 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 |
|
---|
175 | interface 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 | ]
|
---|
276 | interface 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 | }
|
---|