source: trunk/include/win/wine/obj_moniker.h

Last change on this file was 641, checked in by sandervl, 26 years ago

Updated Wine headers

File size: 16.0 KB
Line 
1/* $Id: obj_moniker.h,v 1.5 1999-08-22 22:52:08 sandervl Exp $ */
2/*
3 * Defines the COM interfaces and APIs related to the moniker functionality.
4 */
5#ifndef __WINE_WINE_OBJ_MONIKER_H
6#define __WINE_WINE_OBJ_MONIKER_H
7
8#include "wine/obj_base.h"
9#include "wine/obj_storage.h"
10#include "wine/obj_misc.h"
11
12#ifdef __cplusplus
13extern "C" {
14#endif /* defined(__cplusplus) */
15
16/*****************************************************************************
17 * Predeclare the interfaces
18 */
19DEFINE_OLEGUID(IID_IBindCtx,0xe,0,0);
20typedef struct IBindCtx IBindCtx,*LPBINDCTX;
21typedef LPBINDCTX LPBC;
22
23DEFINE_OLEGUID(IID_IClassActivator, 0x00000140L, 0, 0);
24typedef struct IClassActivator IClassActivator,*LPCLASSACTIVATOR;
25
26DEFINE_OLEGUID(IID_IEnumMoniker, 0x00000102L, 0, 0);
27typedef struct IEnumMoniker IEnumMoniker,*LPENUMMONIKER;
28
29DEFINE_OLEGUID(IID_IMoniker, 0x0000000fL, 0, 0);
30typedef struct IMoniker IMoniker,*LPMONIKER;
31
32DEFINE_GUID (IID_IROTData, 0xf29f6bc0L, 0x5021, 0x11ce, 0xaa, 0x15, 0x00, 0x00, 0x69, 0x01, 0x29, 0x3f);
33typedef struct IROTData IROTData,*LPROTDATA;
34
35DEFINE_OLEGUID(IID_IRunnableObject, 0x00000126L, 0, 0);
36typedef struct IRunnableObject IRunnableObject,*LPRUNNABLEOBJECT;
37
38DEFINE_OLEGUID(IID_IRunningObjectTable, 0x00000010L, 0, 0);
39typedef struct IRunningObjectTable IRunningObjectTable,*LPRUNNINGOBJECTTABLE;
40
41DEFINE_GUID( CLSID_FileMoniker,0x00000303,0,0,0xc0,0,0,0,0,0,0,0x46);
42
43DEFINE_GUID( CLSID_ItemMoniker,0x00000304,0,0,0xc0,0,0,0,0,0,0,0x46);
44
45DEFINE_GUID( CLSID_AntiMoniker,0x00000305,0,0,0xc0,0,0,0,0,0,0,0x46);
46
47DEFINE_GUID( CLSID_CompositeMoniker,0x00000309,0,0,0xc0,0,0,0,0,0,0,0x46);
48
49/*********************************************************************************
50 * BIND_OPTS and BIND_OPTS2 structures definition
51 * These structures contain parameters used during a moniker-binding operation.
52 *********************************************************************************/
53typedef struct tagBIND_OPTS
54{
55 DWORD cbStruct;
56 DWORD grfFlags;
57 DWORD grfMode;
58 DWORD dwTickCountDeadline;
59} BIND_OPTS, * LPBIND_OPTS;
60
61typedef struct tagBIND_OPTS2
62{
63 DWORD cbStruct;
64 DWORD grfFlags;
65 DWORD grfMode;
66 DWORD dwTickCountDeadline;
67 DWORD dwTrackFlags;
68 DWORD dwClassContext;
69 LCID locale;
70 COSERVERINFO* pServerInfo;
71} BIND_OPTS2, * LPBIND_OPTS2;
72
73/*****************************************************************************
74 * IBindCtx interface
75 */
76#define ICOM_INTERFACE IBindCtx
77#define IBindCtx_METHODS \
78 ICOM_METHOD1 (HRESULT, RegisterObjectBound, IUnknown*,punk) \
79 ICOM_METHOD1 (HRESULT, RevokeObjectBound, IUnknown*,punk) \
80 ICOM_METHOD (HRESULT, ReleaseBoundObjects) \
81 ICOM_METHOD1 (HRESULT, SetBindOptions, LPBIND_OPTS2,pbindopts) \
82 ICOM_METHOD1 (HRESULT, GetBindOptions, LPBIND_OPTS2,pbindopts) \
83 ICOM_METHOD1 (HRESULT, GetRunningObjectTable,IRunningObjectTable**,pprot) \
84 ICOM_METHOD2 (HRESULT, RegisterObjectParam, LPOLESTR,pszkey, IUnknown*,punk) \
85 ICOM_METHOD2 (HRESULT, GetObjectParam, LPOLESTR,pszkey, IUnknown**,punk) \
86 ICOM_METHOD1 (HRESULT, EnumObjectParam, IEnumString**,ppenum) \
87 ICOM_METHOD1 (HRESULT, RevokeObjectParam, LPOLESTR,pszkey)
88#define IBindCtx_IMETHODS \
89 IUnknown_IMETHODS \
90 IBindCtx_METHODS
91ICOM_DEFINE(IBindCtx,IUnknown)
92#undef ICOM_INTERFACE
93
94#ifdef ICOM_CINTERFACE
95/*** IUnknown methods ***/
96#define IBindCtx_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
97#define IBindCtxr_AddRef(p) ICOM_CALL (AddRef,p)
98#define IBindCtx_Release(p) ICOM_CALL (Release,p)
99/* IBindCtx methods*/
100#define IBindCtx_RegisterObjectBound(p,a) ICOM_CALL1(RegisterObjectBound,p,a)
101#define IBindCtx_RevokeObjectBound(p,a) ICOM_CALL1(RevokeObjectBound,p,a)
102#define IBindCtx_ReleaseBoundObjects(p) ICOM_CALL (ReleaseBoundObjects,p)
103#define IBindCtx_SetBindOptions(p,a) ICOM_CALL1(SetBindOptions,p,a)
104#define IBindCtx_GetBindOptions(p,a) ICOM_CALL1(GetBindOptions,p,a)
105#define IBindCtx_GetRunningObjectTable(p,a) ICOM_CALL1(GetRunningObjectTable,p,a)
106#define IBindCtx_RegisterObjectParam(p,a,b) ICOM_CALL2(RegisterObjectParam,p,a,b)
107#define IBindCtx_GetObjectParam(p,a,b) ICOM_CALL2(GetObjectParam,p,a,b)
108#define IBindCtx_EnumObjectParam(p,a) ICOM_CALL1(EnumObjectParam,p,a)
109#define IBindCtx_RevokeObjectParam(p,a) ICOM_CALL1(RevokeObjectParam,p,a)
110#endif
111
112HRESULT WINAPI CreateBindCtx16(DWORD reserved, LPBC* ppbc);
113HRESULT WINAPI CreateBindCtx(DWORD reserved, LPBC* ppbc);
114
115/*****************************************************************************
116 * IClassActivator interface
117 */
118#define ICOM_INTERFACE IClassActivator
119#define IClassActivator_METHODS \
120 ICOM_METHOD5(HRESULT,GetClassObject, REFCLSID,rclsid, DWORD,dwClassContext, LCID,locale, REFIID,riid, void**,ppv)
121#define IClassActivator_IMETHODS \
122 IUnknown_IMETHODS \
123 IClassActivator_METHODS
124ICOM_DEFINE(IClassActivator,IUnknown)
125#undef ICOM_INTERFACE
126
127#ifdef ICOM_CINTERFACE
128/*** IUnknown methods ***/
129#define IClassActivator_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
130#define IClassActivator_AddRef(p) ICOM_CALL (AddRef,p)
131#define IClassActivator_Release(p) ICOM_CALL (Release,p)
132/*** IClassActivator methods ***/
133#define IClassActivator_GetClassObject(p,a,b,c,d,e) ICOM_CALL5(GetClassObject,p,a,b,c,d,e)
134#endif
135
136
137/*****************************************************************************
138 * IEnumMoniker interface
139 */
140#define ICOM_INTERFACE IEnumMoniker
141#define IEnumMoniker_METHODS \
142 ICOM_METHOD3(HRESULT,Next, ULONG,celt, IMoniker**,rgelt, ULONG*,pceltFethed) \
143 ICOM_METHOD1(HRESULT,Skip, ULONG,celt) \
144 ICOM_METHOD (HRESULT,Reset) \
145 ICOM_METHOD1(HRESULT,Clone, IEnumMoniker**,ppenum)
146#define IEnumMoniker_IMETHODS \
147 IUnknown_IMETHODS \
148 IEnumMoniker_METHODS
149ICOM_DEFINE(IEnumMoniker,IUnknown)
150#undef ICOM_INTERFACE
151
152#ifdef ICOM_CINTERFACE
153/*** IUnknown methods ***/
154#define IEnumMoniker_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
155#define IEnumMoniker_AddRef(p) ICOM_CALL (AddRef,p)
156#define IEnumMoniker_Release(p) ICOM_CALL (Release,p)
157/*** IEnumMoniker methods ***/
158#define IEnumMoniker_Next(p,a,b,c) ICOM_CALL3(Next,p,a,b,c)
159#define IEnumMoniker_Skip(p,a) ICOM_CALL1(Skip,p,a)
160#define IEnumMoniker_Reset(p) ICOM_CALL (Reset,p)
161#define IEnumMoniker_Clone(p,a) ICOM_CALL1(Clone,p,a)
162#endif
163
164/*****************************************************************************
165 * IMoniker interface
166 */
167
168typedef enum tagMKSYS
169{
170 MKSYS_NONE = 0,
171 MKSYS_GENERICCOMPOSITE = 1,
172 MKSYS_FILEMONIKER = 2,
173 MKSYS_ANTIMONIKER = 3,
174 MKSYS_ITEMMONIKER = 4,
175 MKSYS_POINTERMONIKER = 5,
176 MKSYS_CLASSMONIKER = 7
177} MKSYS;
178
179typedef enum tagMKREDUCE
180{
181 MKRREDUCE_ONE = 3 << 16,
182 MKRREDUCE_TOUSER = 2 << 16,
183 MKRREDUCE_THROUGHUSER = 1 << 16,
184 MKRREDUCE_ALL = 0
185} MKRREDUCE;
186
187#define ICOM_INTERFACE IMoniker
188#define IMoniker_METHODS \
189 ICOM_METHOD4(HRESULT,BindToObject, IBindCtx*,pbc, IMoniker*,pmkToLeft, REFIID,riidResult, void**,ppvResult) \
190 ICOM_METHOD4(HRESULT,BindToStorage, IBindCtx*,pbc, IMoniker*,pmkToLeft, REFIID,riid, void**,ppvObj) \
191 ICOM_METHOD4(HRESULT,Reduce, IBindCtx*,pbc, DWORD,dwReduceHowFar, IMoniker**,ppmkToLeft, IMoniker**,ppmkReduced) \
192 ICOM_METHOD3(HRESULT,ComposeWith, IMoniker*,pmkRight, BOOL,fOnlyIfNotGeneric, IMoniker**,ppmkComposite) \
193 ICOM_METHOD2(HRESULT,Enum, BOOL,fForward, IEnumMoniker**,ppenumMoniker) \
194 ICOM_METHOD1(HRESULT,IsEqual, IMoniker*,pmkOtherMoniker) \
195 ICOM_METHOD1(HRESULT,Hash, DWORD*,pdwHash) \
196 ICOM_METHOD3(HRESULT,IsRunning, IBindCtx*,pbc, IMoniker*,pmkToLeft, IMoniker*,pmkNewlyRunning) \
197 ICOM_METHOD3(HRESULT,GetTimeOfLastChange, IBindCtx*,pbc, IMoniker*,pmkToLeft, FILETIME*,pFileTime) \
198 ICOM_METHOD1(HRESULT,Inverse, IMoniker**,ppmk) \
199 ICOM_METHOD2(HRESULT,CommonPrefixWith, IMoniker*,pmkOtherMoniker, IMoniker**,ppmkPrefix) \
200 ICOM_METHOD2(HRESULT,RelativePathTo, IMoniker*,pmkOther, IMoniker**,ppmkRelPath) \
201 ICOM_METHOD3(HRESULT,GetDisplayName, IBindCtx*,pbc, IMoniker*,pmkToLeft, LPOLESTR*,ppszDisplayName) \
202 ICOM_METHOD5(HRESULT,ParseDisplayName, IBindCtx*,pbc, IMoniker*,pmkToLeft, LPOLESTR,pszDisplayName, ULONG*,pchEaten, IMoniker**,ppmkOut) \
203 ICOM_METHOD1(HRESULT,IsSystemMoniker, DWORD*,pdwMksys)
204#define IMoniker_IMETHODS \
205 IPersistStream_IMETHODS \
206 IMoniker_METHODS
207ICOM_DEFINE(IMoniker,IPersistStream)
208#undef ICOM_INTERFACE
209
210#ifdef ICOM_CINTERFACE
211/*** IUnknown methods ***/
212#define IMoniker_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
213#define IMoniker_AddRef(p) ICOM_CALL (AddRef,p)
214#define IMoniker_Release(p) ICOM_CALL (Release,p)
215
216/*** IPersist methods ***/
217#define IMoniker_GetClassID(p,a) ICOM_CALL1(GetClassID,p,a)
218/*** IPersistStream methods ***/
219#define IMoniker_IsDirty(p) ICOM_CALL (IsDirty,p)
220#define IMoniker_Load(p,a) ICOM_CALL1(Load,p,a)
221#define IMoniker_Save(p,a,b) ICOM_CALL2(Save,p,a,b)
222#define IMoniker_GetSizeMax(p,a) ICOM_CALL1(GetSizeMax,p,a)
223/*** IMoniker methods ***/
224#define IMoniker_BindToObject(p,a,b,c,d) ICOM_CALL4(BindToObject,p,a,b,c,d)
225#define IMoniker_BindToStorage(p,a,b,c,d) ICOM_CALL4(BindToStorage,p,a,b,c,d)
226#define IMoniker_Reduce(p,a,b,c,d) ICOM_CALL4(Reduce,p,a,b,c,d)
227#define IMoniker_ComposeWith(p,a,b,c) ICOM_CALL3(ComposeWith,p,a,b,c)
228#define IMoniker_Enum(p,a,b) ICOM_CALL2(Enum,p,a,b)
229#define IMoniker_IsEqual(p,a) ICOM_CALL1(IsEqual,p,a)
230#define IMoniker_Hash(p,a) ICOM_CALL1(Hash,p,a)
231#define IMoniker_IsRunning(p,a,b,c) ICOM_CALL3(IsRunning,p,a,b,c)
232#define IMoniker_GetTimeOfLastChange(p,a,b,c) ICOM_CALL3(GetTimeOfLastChange,p,a,b,c)
233#define IMoniker_Inverse(p,a) ICOM_CALL1(Inverse,p,a)
234#define IMoniker_CommonPrefixWith(p,a,b) ICOM_CALL2(CommonPrefixWith,p,a,b)
235#define IMoniker_RelativePathTo(p,a,b) ICOM_CALL2(RelativePathTo,p,a,b)
236#define IMoniker_GetDisplayName(p,a,b,c) ICOM_CALL3(GetDisplayName,p,a,b,c)
237#define IMoniker_ParseDisplayName(p,a,b,c,d,e) ICOM_CALL5(ParseDisplayName,p,a,b,c,d,e)
238#define IMoniker_IsSystemMoniker(p,a) ICOM_CALL1(IsSystemMoniker,p,a)
239#endif
240
241HRESULT WINAPI CreateFileMoniker16(LPCOLESTR16 lpszPathName, LPMONIKER* ppmk);
242HRESULT WINAPI CreateFileMoniker(LPCOLESTR lpszPathName, LPMONIKER* ppmk);
243
244HRESULT WINAPI CreateItemMoniker16(LPCOLESTR16 lpszDelim, LPCOLESTR lpszItem, LPMONIKER* ppmk);
245HRESULT WINAPI CreateItemMoniker(LPCOLESTR lpszDelim, LPCOLESTR lpszItem, LPMONIKER* ppmk);
246
247HRESULT WINAPI CreateAntiMoniker(LPMONIKER * ppmk);
248
249HRESULT WINAPI CreateGenericComposite(LPMONIKER pmkFirst, LPMONIKER pmkRest, LPMONIKER* ppmkComposite);
250
251/* FIXME: not implemented */
252HRESULT WINAPI BindMoniker(LPMONIKER pmk, DWORD grfOpt, REFIID iidResult, LPVOID* ppvResult);
253
254/* FIXME: not implemented */
255HRESULT WINAPI CreateClassMoniker(REFCLSID rclsid, LPMONIKER* ppmk);
256
257/* FIXME: not implemented */
258HRESULT WINAPI CreatePointerMoniker(LPUNKNOWN punk, LPMONIKER* ppmk);
259
260/* FIXME: not implemented */
261HRESULT WINAPI MonikerCommonPrefixWith(IMoniker* pmkThis,IMoniker* pmkOther,IMoniker** ppmkCommon);
262/*****************************************************************************
263 * IROTData interface
264 */
265#define ICOM_INTERFACE IROTData
266#define IROTData_METHODS \
267 ICOM_METHOD3(HRESULT,GetComparisonData, byte*,pbData, ULONG,cbMax, ULONG*,pcbData)
268#define IROTData_IMETHODS \
269 IUnknown_IMETHODS \
270 IROTData_METHODS
271ICOM_DEFINE(IROTData,IUnknown)
272#undef ICOM_INTERFACE
273
274#ifdef ICOM_CINTERFACE
275/*** IUnknown methods ***/
276#define IROTData_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
277#define IROTData_AddRef(p) ICOM_CALL (AddRef,p)
278#define IROTData_Release(p) ICOM_CALL (Release,p)
279/*** IROTData methods ***/
280#define IROTData_GetComparisonData(p,a,b,c) ICOM_CALL3(GetComparisonData,p,a,b,c)
281#endif
282
283#define ICOM_THIS_From_IROTData(class, name) class* This = (class*)(((char*)name)-sizeof(void*))
284
285/*****************************************************************************
286 * IRunnableObject interface
287 */
288#define ICOM_INTERFACE IRunnableObject
289#define IRunnableObject_METHODS \
290 ICOM_METHOD1(HRESULT,GetRunningClass, LPCLSID,lpClsid) \
291 ICOM_METHOD1(HRESULT,Run, IBindCtx*,pbc) \
292 ICOM_METHOD (BOOL,IsRunning) \
293 ICOM_METHOD2(HRESULT,LockRunning, BOOL,fLock, BOOL,fLastUnlockCloses) \
294 ICOM_METHOD1(HRESULT,SetContainedObject, BOOL,fContained)
295#define IRunnableObject_IMETHODS \
296 IUnknown_IMETHODS \
297 IRunnableObject_METHODS
298ICOM_DEFINE(IRunnableObject,IUnknown)
299#undef ICOM_INTERFACE
300
301#ifdef ICOM_CINTERFACE
302/*** IUnknown methods ***/
303#define IRunnableObject_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
304#define IRunnableObject_AddRef(p) ICOM_CALL (AddRef,p)
305#define IRunnableObject_Release(p) ICOM_CALL (Release,p)
306/*** IRunnableObject methods ***/
307#define IRunnableObject_GetRunningClass(p,a) ICOM_CALL1(GetRunningClass,p,a)
308#define IRunnableObject_Run(p,a) ICOM_CALL1(Run,p,a)
309#define IRunnableObject_IsRunning(p) ICOM_CALL (IsRunning,p)
310#define IRunnableObject_LockRunning(p,a,b) ICOM_CALL2(LockRunning,p,a,b)
311#define IRunnableObject_SetContainedObject(p,a) ICOM_CALL1(SetContainedObject,p,a)
312#endif
313
314
315/*****************************************************************************
316 * IRunningObjectTable interface
317 */
318#define ICOM_INTERFACE IRunningObjectTable
319#define IRunningObjectTable_METHODS \
320 ICOM_METHOD4(HRESULT,Register, DWORD,grfFlags, IUnknown*,punkObject, IMoniker*,pmkObjectName, DWORD*,pdwRegister) \
321 ICOM_METHOD1(HRESULT,Revoke, DWORD,dwRegister) \
322 ICOM_METHOD1(HRESULT,IsRunning, IMoniker*,pmkObjectName) \
323 ICOM_METHOD2(HRESULT,GetObject, IMoniker*,pmkObjectName, IUnknown**,ppunkObject) \
324 ICOM_METHOD2(HRESULT,NoteChangeTime, DWORD,dwRegister, FILETIME*,pfiletime) \
325 ICOM_METHOD2(HRESULT,GetTimeOfLastChange, IMoniker*,pmkObjectName, FILETIME*,pfiletime) \
326 ICOM_METHOD1(HRESULT,EnumRunning, IEnumMoniker**,ppenumMoniker)
327#define IRunningObjectTable_IMETHODS \
328 IUnknown_IMETHODS \
329 IRunningObjectTable_METHODS
330ICOM_DEFINE(IRunningObjectTable,IUnknown)
331#undef ICOM_INTERFACE
332
333#ifdef ICOM_CINTERFACE
334/*** IUnknown methods ***/
335#define IRunningObjectTable_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
336#define IRunningObjectTable_AddRef(p) ICOM_CALL (AddRef,p)
337#define IRunningObjectTable_Release(p) ICOM_CALL (Release,p)
338/*** IRunningObjectTable methods ***/
339#define IRunningObjectTable_Register(p,a,b,c,d) ICOM_CALL4(Register,p,a,b,c,d)
340#define IRunningObjectTable_Revoke(p,a) ICOM_CALL1(Revoke,p,a)
341#define IRunningObjectTable_IsRunning(p,a) ICOM_CALL1(IsRunning,p,a)
342#define IRunningObjectTable_GetObject(p,a,b) ICOM_CALL2(GetObject,p,a,b)
343#define IRunningObjectTable_NoteChangeTime(p,a,b) ICOM_CALL2(NoteChangeTime,p,a,b)
344#define IRunningObjectTable_GetTimeOfLastChange(p,a,b) ICOM_CALL2(GetTimeOfLastChange,p,a,b)
345#define IRunningObjectTable_EnumRunning(p,a) ICOM_CALL1(EnumRunning,p,a)
346#endif
347
348HRESULT WINAPI GetRunningObjectTable(DWORD reserved, LPRUNNINGOBJECTTABLE *pprot);
349HRESULT WINAPI GetRunningObjectTable16(DWORD reserved, LPRUNNINGOBJECTTABLE *pprot);
350
351/*****************************************************************************
352 * Additional API
353 */
354
355/* FIXME: not implemented */
356HRESULT WINAPI CoGetInstanceFromFile(COSERVERINFO* pServerInfo, CLSID* pClsid, IUnknown* punkOuter, DWORD dwClsCtx, DWORD grfMode, OLECHAR* pwszName, DWORD dwCount, MULTI_QI* pResults);
357
358/* FIXME: not implemented */
359HRESULT WINAPI CoGetInstanceFromIStorage(COSERVERINFO* pServerInfo, CLSID* pClsid, IUnknown* punkOuter, DWORD dwClsCtx, IStorage* pstg, DWORD dwCount, MULTI_QI* pResults);
360
361#ifdef __cplusplus
362} /* extern "C" */
363#endif /* defined(__cplusplus) */
364
365#endif /* __WINE_WINE_OBJ_MONIKER_H */
Note: See TracBrowser for help on using the repository browser.