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