~zulcss/samba/server-dailies-3.4

« back to all changes in this revision

Viewing changes to librpc/idl/dcom.idl

  • Committer: Chuck Short
  • Date: 2010-09-28 20:38:39 UTC
  • Revision ID: zulcss@ubuntu.com-20100928203839-pgjulytsi9ue63x1
Initial version

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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
}