2 * Defines the COM interfaces and APIs related to the moniker functionality.
4 #ifndef __WINE_WINE_OBJ_MONIKER_H
5 #define __WINE_WINE_OBJ_MONIKER_H
7 #include "wine/obj_base.h"
8 #include "wine/obj_storage.h"
9 #include "wine/obj_misc.h"
11 /*****************************************************************************
12 * Predeclare the interfaces
14 DEFINE_OLEGUID(IID_IBindCtx
,0xe,0,0);
15 typedef struct IBindCtx IBindCtx
,*LPBINDCTX
;
16 typedef LPBINDCTX LPBC
;
18 DEFINE_OLEGUID(IID_IClassActivator
, 0x00000140L
, 0, 0);
19 typedef struct IClassActivator IClassActivator
,*LPCLASSACTIVATOR
;
21 DEFINE_OLEGUID(IID_IEnumMoniker
, 0x00000102L
, 0, 0);
22 typedef struct IEnumMoniker IEnumMoniker
,*LPENUMMONIKER
;
24 DEFINE_OLEGUID(IID_IMoniker
, 0x0000000fL
, 0, 0);
25 typedef struct IMoniker IMoniker
,*LPMONIKER
;
27 DEFINE_GUID (IID_IROTData
, 0xf29f6bc0L
, 0x5021, 0x11ce, 0xaa, 0x15, 0x00, 0x00, 0x69, 0x01, 0x29, 0x3f);
28 typedef struct IROTData IROTData
,*LPROTDATA
;
30 DEFINE_OLEGUID(IID_IRunnableObject
, 0x00000126L
, 0, 0);
31 typedef struct IRunnableObject IRunnableObject
,*LPRUNNABLEOBJECT
;
33 DEFINE_OLEGUID(IID_IRunningObjectTable
, 0x00000010L
, 0, 0);
34 typedef struct IRunningObjectTable IRunningObjectTable
,*LPRUNNINGOBJECTTABLE
;
38 /*********************************************************************************
39 * BIND_OPTS and BIND_OPTS2 structures definition
40 * These structures contain parameters used during a moniker-binding operation.
41 *********************************************************************************/
42 typedef struct tagBIND_OPTS
47 DWORD dwTickCountDeadline
;
48 } BIND_OPTS
, * LPBIND_OPTS
;
50 typedef struct tagBIND_OPTS2
55 DWORD dwTickCountDeadline
;
59 COSERVERINFO
* pServerInfo
;
60 } BIND_OPTS2
, * LPBIND_OPTS2
;
62 /*****************************************************************************
65 #define ICOM_INTERFACE IBindCtx
66 #define IBindCtx_METHODS \
67 ICOM_METHOD1 (HRESULT, RegisterObjectBound, IUnknown*,punk) \
68 ICOM_METHOD1 (HRESULT, RevokeObjectBound, IUnknown*,punk) \
69 ICOM_METHOD (HRESULT, ReleaseObjects) \
70 ICOM_METHOD1 (HRESULT, SetBindOptions, LPBIND_OPTS2,pbindopts) \
71 ICOM_METHOD1 (HRESULT, GetBindOptions, LPBIND_OPTS2,pbindopts) \
72 ICOM_METHOD1 (HRESULT, GetRunningObjectTable,IRunningObjectTable**,pprot) \
73 ICOM_METHOD2 (HRESULT, RegisterObjectParam, LPOLESTR,pszkey, IUnknown*,punk) \
74 ICOM_METHOD2 (HRESULT, GetObjectParam, LPOLESTR,pszkey, IUnknown*,punk) \
75 ICOM_METHOD1 (HRESULT, EnumObjectParam, IEnumString**,ppenum) \
76 ICOM_METHOD1 (HRESULT, RevokeObjectParam, LPOLESTR,pszkey)
77 #define IBindCtx_IMETHODS \
80 ICOM_DEFINE(IBindCtx
,IUnknown
)
83 #ifdef ICOM_CINTERFACE
84 /*** IUnknown methods ***/
85 #define IBindCtx_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
86 #define IBindCtxr_AddRef(p) ICOM_CALL (AddRef,p)
87 #define IBindCtx_Release(p) ICOM_CALL (Release,p)
89 #define IBindCtx_RegisterObjectBound(p,a) ICOM_CALL1(RegisterObjectBound,p,a)
90 #define IBindCtx_RevokeObjectBound(p,a) ICOM_CALL1(RevokeObjectBound,p,a)
91 #define IBindCtx_ReleaseObjects(p) ICOM_CALL (ReleaseObjects,p)
92 #define IBindCtx_SetBindOptions(p,a) ICOM_CALL1(SetBindOptions,p,a)
93 #define IBindCtx_GetBindOptions(p,a) ICOM_CALL1(GetBindOptions,p,a)
94 #define IBindCtx_GetRunningObjectTable(p,a) ICOM_CALL1(GetRunningObjectTable,p,a)
95 #define IBindCtx_RegisterObjectParam(p,a,b) ICOM_CALL2(RegisterObjectParam,p,a,b)
96 #define IBindCtx_GetObjectParam(p,a,b) ICOM_CALL2(GetObjectParam,p,a,b)
97 #define IBindCtx_EnumObjectParam(p,a) ICOM_CALL1(EnumObjectParam,p,a)
98 #define IBindCtx_RevokeObjectParam(p,a) ICOM_CALL1(RevokeObjectParam,p,a)
101 HRESULT WINAPI
CreateBindCtx16(DWORD reserved
, LPBC
* ppbc
);
102 HRESULT WINAPI
CreateBindCtx(DWORD reserved
, LPBC
* ppbc
);
105 /*****************************************************************************
106 * IClassActivator interface
108 #define ICOM_INTERFACE IClassActivator
109 #define IClassActivator_METHODS \
110 ICOM_METHOD5(HRESULT,GetClassObject, REFCLSID,rclsid, DWORD,dwClassContext, LCID,locale, REFIID,riid, void**,ppv)
111 #define IClassActivator_IMETHODS \
113 IClassActivator_METHODS
114 ICOM_DEFINE(IClassActivator
,IUnknown
)
115 #undef ICOM_INTERFACE
117 #ifdef ICOM_CINTERFACE
118 /*** IUnknown methods ***/
119 #define IClassActivator_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
120 #define IClassActivator_AddRef(p) ICOM_CALL (AddRef,p)
121 #define IClassActivator_Release(p) ICOM_CALL (Release,p)
122 /*** IClassActivator methods ***/
123 #define IClassActivator_GetClassObject(p,a,b,c,d,e) ICOM_CALL5(GetClassObject,p,a,b,c,d,e)
127 /*****************************************************************************
128 * IEnumMoniker interface
130 #define ICOM_INTERFACE IEnumMoniker
131 #define IEnumMoniker_METHODS \
132 ICOM_METHOD3(HRESULT,Next, ULONG,celt, IMoniker***,rgelt, ULONG*,pceltFethed) \
133 ICOM_METHOD1(HRESULT,Skip, ULONG,celt) \
134 ICOM_METHOD (HRESULT,Reset) \
135 ICOM_METHOD1(HRESULT,Clone, IEnumMoniker**,ppenum)
136 #define IEnumMoniker_IMETHODS \
139 ICOM_DEFINE(IEnumMoniker
,IUnknown
)
140 #undef ICOM_INTERFACE
142 #ifdef ICOM_CINTERFACE
143 /*** IUnknown methods ***/
144 #define IEnumMoniker_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
145 #define IEnumMoniker_AddRef(p) ICOM_CALL (AddRef,p)
146 #define IEnumMoniker_Release(p) ICOM_CALL (Release,p)
147 /*** IEnumMoniker methods ***/
148 #define IEnumMoniker_Next(p,a,b,c) ICOM_CALL3(Next,p,a,b,c)
149 #define IEnumMoniker_Skip(p,a) ICOM_CALL1(Skip,p,a)
150 #define IEnumMoniker_Reset(p) ICOM_CALL (Reset,p)
151 #define IEnumMoniker_Clone(p,a) ICOM_CALL1(Clone,p,a)
155 /*****************************************************************************
159 typedef enum tagMKSYS
162 MKSYS_GENERICCOMPOSITE
= 1,
163 MKSYS_FILEMONIKER
= 2,
164 MKSYS_ANTIMONIKER
= 3,
165 MKSYS_ITEMMONIKER
= 4,
166 MKSYS_POINTERMONIKER
= 5,
167 MKSYS_CLASSMONIKER
= 7
170 typedef enum tagMKREDUCE
172 MKRREDUCE_ONE
= 3 << 16,
173 MKRREDUCE_TOUSER
= 2 << 16,
174 MKRREDUCE_THROUGHUSER
= 1 << 16,
178 #define ICOM_INTERFACE IMoniker
179 #define IMoniker_METHODS \
180 ICOM_METHOD4(HRESULT,BindToObject, IBindCtx*,pbc, IMoniker*,pmkToLeft, REFIID,riidResult, void**,ppvResult) \
181 ICOM_METHOD4(HRESULT,BindToStorage, IBindCtx*,pbc, IMoniker*,pmkToLeft, REFIID,riid, void**,ppvObj) \
182 ICOM_METHOD4(HRESULT,Reduce, IBindCtx*,pbc, DWORD,dwReduceHowFar, IMoniker**,ppmkToLeft, IMoniker**,ppmkReduced) \
183 ICOM_METHOD3(HRESULT,ComposeWith, IMoniker*,pmkRight, BOOL,fOnlyIfNotGeneric, IMoniker**,ppmkComposite) \
184 ICOM_METHOD2(HRESULT,Enum, BOOL,fForward, IEnumMoniker**,ppenumMoniker) \
185 ICOM_METHOD1(HRESULT,IsEqual, IMoniker*,pmkOtherMoniker) \
186 ICOM_METHOD1(HRESULT,Hash, DWORD*,pdwHash) \
187 ICOM_METHOD3(HRESULT,IsRunning, IBindCtx*,pbc, IMoniker*,pmkToLeft, IMoniker*,pmkNewlyRunning) \
188 ICOM_METHOD3(HRESULT,GetTimeOfLastChange, IBindCtx*,pbc, IMoniker*,pmkToLeft, FILETIME*,pFileTime) \
189 ICOM_METHOD1(HRESULT,Inverse, IMoniker**,ppmk) \
190 ICOM_METHOD2(HRESULT,CommonPrefixWith, IMoniker*,pmkOtherMoniker, IMoniker**,ppmkPrefix) \
191 ICOM_METHOD2(HRESULT,RelativePathTo, IMoniker*,pmkOther, IMoniker**,ppmkRelPath) \
192 ICOM_METHOD3(HRESULT,GetDisplayName, IBindCtx*,pbc, IMoniker*,pmkToLeft, LPOLESTR*,ppszDisplayName) \
193 ICOM_METHOD5(HRESULT,ParseDisplayName, IBindCtx*,pbc, IMoniker*,pmkToLeft, LPOLESTR,pszDisplayName, ULONG*,pchEaten, IMoniker**,ppmkOut) \
194 ICOM_METHOD1(HRESULT,IsSystemMoniker, DWORD*,pdwMksys)
195 #define IMoniker_IMETHODS \
196 IPersistStream_IMETHODS \
198 ICOM_DEFINE(IMoniker
,IPersistStream
)
199 #undef ICOM_INTERFACE
201 #ifdef ICOM_CINTERFACE
202 /*** IUnknown methods ***/
203 #define IMoniker_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
204 #define IMoniker_AddRef(p) ICOM_CALL (AddRef,p)
205 #define IMoniker_Release(p) ICOM_CALL (Release,p)
206 /*** IPersist methods ***/
207 #define IMoniker_GetClassID(p,a) ICOM_CALL1(GetClassID,p,a)
208 /*** IPersistStream methods ***/
209 #define IMoniker_IsDirty(p) ICOM_CALL (IsDirty,p)
210 #define IMoniker_Load(p,a) ICOM_CALL1(Load,p,a)
211 #define IMoniker_Save(p,a,b) ICOM_CALL2(Save,p,a,b)
212 #define IMoniker_GetSizeMax(p,a) ICOM_CALL1(GetSizeMax,p,a)
213 /*** IMoniker methods ***/
214 #define IMoniker_BindToObject(p,a,b,c,d) ICOM_CALL(BindToObject,p,a,b,c,d)
215 #define IMoniker_BindToStorage(p,a,b,c,d) ICOM_CALL(BindToStorage,p,a,b,c,d)
216 #define IMoniker_Reduce(p,a,b,c,d) ICOM_CALL(Reduce,p,a,b,c,d)
217 #define IMoniker_ComposeWith(p,a,b,c) ICOM_CALL(ComposeWith,p,a,b,c)
218 #define IMoniker_Enum(p,a,b) ICOM_CALL(Enum,p,a,b)
219 #define IMoniker_IsEqual(p,a) ICOM_CALL(IsEqual,p,a)
220 #define IMoniker_Hash(p,a) ICOM_CALL(Hash,p,a)
221 #define IMoniker_IsRunning(p,a,b,c) ICOM_CALL(IsRunning,p,a,b,c)
222 #define IMoniker_GetTimeOfLastChange(p,a,b,c) ICOM_CALL(GetTimeOfLastChange,p,a,b,c)
223 #define IMoniker_Inverse(p,a) ICOM_CALL(Inverse,p,a)
224 #define IMoniker_CommonPrefixWith(p,a,b) ICOM_CALL(CommonPrefixWith,p,a,b)
225 #define IMoniker_RelativePathTo(p,a,b) ICOM_CALL(RelativePathTo,p,a,b)
226 #define IMoniker_GetDisplayName(p,a,b,c) ICOM_CALL(GetDisplayName,p,a,b,c)
227 #define IMoniker_ParseDisplayName(p,a,b,c,d,e) ICOM_CALL(ParseDisplayName,p,a,b,c,d,e)
228 #define IMoniker_IsSystemMoniker(p,a) ICOM_CALL(IsSystemMoniker,p,a)
231 /* FIXME: not implemented */
232 HRESULT WINAPI
BindMoniker(LPMONIKER pmk
, DWORD grfOpt
, REFIID iidResult
, LPVOID
* ppvResult
);
234 /* FIXME: not implemented */
235 HRESULT WINAPI
CreateAntiMoniker(LPMONIKER
* ppmk
);
237 /* FIXME: not implemented */
238 HRESULT WINAPI
CreateClassMoniker(REFCLSID rclsid
, LPMONIKER
* ppmk
);
240 HRESULT WINAPI
CreateFileMoniker16(LPCOLESTR16 lpszPathName
, LPMONIKER
* ppmk
);
241 HRESULT WINAPI
CreateFileMoniker(LPCOLESTR lpszPathName
, LPMONIKER
* ppmk
);
243 HRESULT WINAPI
CreateItemMoniker16(LPCOLESTR16 lpszDelim
, LPCOLESTR lpszItem
, LPMONIKER
* ppmk
);
244 HRESULT WINAPI
CreateItemMoniker(LPCOLESTR lpszDelim
, LPCOLESTR lpszItem
, LPMONIKER
* ppmk
);
246 /* FIXME: not implemented */
247 HRESULT WINAPI
CreateGenericComposite(LPMONIKER pmkFirst
, LPMONIKER pmkRest
, LPMONIKER
* ppmkComposite
);
249 /* FIXME: not implemented */
250 HRESULT WINAPI
CreatePointerMoniker(LPUNKNOWN punk
, LPMONIKER
* ppmk
);
253 /*****************************************************************************
256 #define ICOM_INTERFACE IROTData
257 #define IROTData_METHODS \
258 ICOM_METHOD3(HRESULT,GetComparisonData, byte*,pbData, ULONG,cbMax, ULONG*,pcbData)
259 #define IROTData_IMETHODS \
262 ICOM_DEFINE(IROTData
,IUnknown
)
263 #undef ICOM_INTERFACE
265 #ifdef ICOM_CINTERFACE
266 /*** IUnknown methods ***/
267 #define IROTData_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
268 #define IROTData_AddRef(p) ICOM_CALL (AddRef,p)
269 #define IROTData_Release(p) ICOM_CALL (Release,p)
270 /*** IROTData methods ***/
271 #define IROTData_GetComparisonData(p,a,b,c) ICOM_CALL3(GetComparisonData,p,a,b,c)
275 /*****************************************************************************
276 * IRunnableObject interface
278 #define ICOM_INTERFACE IRunnableObject
279 #define IRunnableObject_METHODS \
280 ICOM_METHOD1(HRESULT,GetRunningClass, LPCLSID,lpClsid) \
281 ICOM_METHOD1(HRESULT,Run, IBindCtx*,pbc) \
282 ICOM_METHOD (BOOL,IsRunning) \
283 ICOM_METHOD2(HRESULT,LockRunning, BOOL,fLock, BOOL,fLastUnlockCloses) \
284 ICOM_METHOD1(HRESULT,SetContainedObject, BOOL,fContained)
285 #define IRunnableObject_IMETHODS \
287 IRunnableObject_METHODS
288 ICOM_DEFINE(IRunnableObject
,IUnknown
)
289 #undef ICOM_INTERFACE
291 #ifdef ICOM_CINTERFACE
292 /*** IUnknown methods ***/
293 #define IRunnableObject_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
294 #define IRunnableObject_AddRef(p) ICOM_CALL (AddRef,p)
295 #define IRunnableObject_Release(p) ICOM_CALL (Release,p)
296 /*** IRunnableObject methods ***/
297 #define IRunnableObject_GetRunningClass(p,a) ICOM_CALL1(GetRunningClass,p,a)
298 #define IRunnableObject_Run(p,a) ICOM_CALL1(Run,p,a)
299 #define IRunnableObject_IsRunning(p) ICOM_CALL (IsRunning,p)
300 #define IRunnableObject_LockRunning(p,a,b) ICOM_CALL2(LockRunning,p,a,b)
301 #define IRunnableObject_SetContainedObject(p,a) ICOM_CALL1(SetContainedObject,p,a)
305 /*****************************************************************************
306 * IRunningObjectTable interface
308 #define ICOM_INTERFACE IRunningObjectTable
309 #define IRunningObjectTable_METHODS \
310 ICOM_METHOD4(HRESULT,Register, DWORD,grfFlags, IUnknown*,punkObject, IMoniker*,pmkObjectName, DWORD*,pdwRegister) \
311 ICOM_METHOD1(HRESULT,Revoke, DWORD,dwRegister) \
312 ICOM_METHOD1(HRESULT,IsRunning, IMoniker*,pmkObjectName) \
313 ICOM_METHOD2(HRESULT,GetObject, IMoniker*,pmkObjectName, IUnknown**,ppunkObject) \
314 ICOM_METHOD2(HRESULT,NoteChangeTime, DWORD,dwRegister, FILETIME*,pfiletime) \
315 ICOM_METHOD2(HRESULT,GetTimeOfLastChange, IMoniker*,pmkObjectName, FILETIME*,pfiletime) \
316 ICOM_METHOD1(HRESULT,EnumRunning, IEnumMoniker**,ppenumMoniker)
317 #define IRunningObjectTable_IMETHODS \
319 IRunningObjectTable_METHODS
320 ICOM_DEFINE(IRunningObjectTable
,IUnknown
)
321 #undef ICOM_INTERFACE
323 #ifdef ICOM_CINTERFACE
324 /*** IUnknown methods ***/
325 #define IRunningObjectTable_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
326 #define IRunningObjectTable_AddRef(p) ICOM_CALL (AddRef,p)
327 #define IRunningObjectTable_Release(p) ICOM_CALL (Release,p)
328 /*** IRunningObjectTable methods ***/
329 #define IRunningObjectTable_Register(p,a,b,c,d) ICOM_CALL4(Register,p,a,b,c,d)
330 #define IRunningObjectTable_Revoke(p,a) ICOM_CALL1(Revoke,p,a)
331 #define IRunningObjectTable_IsRunning(p,a) ICOM_CALL1(IsRunning,p,a)
332 #define IRunningObjectTable_GetObject(p,a,b) ICOM_CALL2(GetObject,p,a,b)
333 #define IRunningObjectTable_NoteChangeTime(p,a,b) ICOM_CALL2(NoteChangeTime,p,a,b)
334 #define IRunningObjectTable_GetTimeOfLastChange(p,a,b) ICOM_CALL2(GetTimeOfLastChange,p,a,b)
335 #define IRunningObjectTable_EnumRunning(p,a) ICOM_CALL1(EnumRunning,p,a)
339 /*****************************************************************************
343 /* FIXME: not implemented */
344 HRESULT WINAPI
CoGetInstanceFromFile(COSERVERINFO
* pServerInfo
, CLSID
* pClsid
, IUnknown
* punkOuter
, DWORD dwClsCtx
, DWORD grfMode
, OLECHAR
* pwszName
, DWORD dwCount
, MULTI_QI
* pResults
);
346 /* FIXME: not implemented */
347 HRESULT WINAPI
CoGetInstanceFromIStorage(COSERVERINFO
* pServerInfo
, CLSID
* pClsid
, IUnknown
* punkOuter
, DWORD dwClsCtx
, IStorage
* pstg
, DWORD dwCount
, MULTI_QI
* pResults
);
350 #endif /* __WINE_WINE_OBJ_MONIKER_H */