2 * Defines the COM interfaces and APIs related to structured data storage.
4 * Depends on 'obj_base.h'.
7 #ifndef __WINE_WINE_OBJ_STORAGE_H
8 #define __WINE_WINE_OBJ_STORAGE_H
14 /*****************************************************************************
15 * Predeclare the structures
17 typedef LPOLESTR16 *SNB16;
18 typedef LPOLESTR32 *SNB32;
19 DECL_WINELIB_TYPE(SNB)
21 typedef struct STATSTG STATSTG;
24 /*****************************************************************************
25 * Predeclare the interfaces
27 DEFINE_OLEGUID(IID_IEnumSTATSTG, 0x0000000dL, 0, 0);
28 typedef struct IEnumSTATSTG IEnumSTATSTG,*LPENUMSTATSTG;
30 DEFINE_GUID (IID_IFillLockBytes, 0x99caf010L, 0x415e, 0x11cf, 0x88, 0x14, 0x00, 0xaa, 0x00, 0xb5, 0x69, 0xf5);
31 typedef struct IFillLockBytes IFillLockBytes,*LPFILLLOCKBYTES;
33 DEFINE_GUID (IID_ILayoutStorage, 0x0e6d4d90L, 0x6738, 0x11cf, 0x96, 0x08, 0x00, 0xaa, 0x00, 0x68, 0x0d, 0xb4);
34 typedef struct ILayoutStorage ILayoutStorage,*LPLAYOUTSTORAGE;
36 DEFINE_OLEGUID(IID_ILockBytes, 0x0000000aL, 0, 0);
37 typedef struct ILockBytes ILockBytes,*LPLOCKBYTES;
39 DEFINE_OLEGUID(IID_IPersist, 0x0000010cL, 0, 0);
40 typedef struct IPersist IPersist,*LPPERSIST;
42 DEFINE_OLEGUID(IID_IPersistFile, 0x0000010bL, 0, 0);
43 typedef struct IPersistFile IPersistFile,*LPPERSISTFILE;
45 DEFINE_OLEGUID(IID_IPersistStorage, 0x0000010aL, 0, 0);
46 typedef struct IPersistStorage IPersistStorage,*LPPERSISTSTORAGE;
48 DEFINE_OLEGUID(IID_IPersistStream, 0x00000109L, 0, 0);
49 typedef struct IPersistStream IPersistStream,*LPPERSISTSTREAM;
51 DEFINE_GUID (IID_IProgressNotify, 0xa9d758a0L, 0x4617, 0x11cf, 0x95, 0xfc, 0x00, 0xaa, 0x00, 0x68, 0x0d, 0xb4);
52 typedef struct IProgressNotify IProgressNotify,*LPPROGRESSNOTIFY;
54 DEFINE_OLEGUID(IID_IRootStorage, 0x00000012L, 0, 0);
55 typedef struct IRootStorage IRootStorage,*LPROOTSTORAGE;
57 DEFINE_GUID (IID_ISequentialStream, 0x0c733a30L, 0x2a1c, 0x11ce, 0xad, 0xe5, 0x00, 0xaa, 0x00, 0x44, 0x77, 0x3d);
58 typedef struct ISequentialStream ISequentialStream,*LPSEQUENTIALSTREAM;
60 DEFINE_OLEGUID(IID_IStorage, 0x0000000bL, 0, 0);
61 typedef struct IStorage16 IStorage16,*LPSTORAGE16;
62 typedef struct IStorage32 IStorage32,*LPSTORAGE32;
63 DECL_WINELIB_TYPE(IStorage)
64 DECL_WINELIB_TYPE(LPSTORAGE)
66 DEFINE_OLEGUID(IID_IStream, 0x0000000cL, 0, 0);
67 typedef struct IStream16 IStream16,*LPSTREAM16;
68 typedef struct IStream32 IStream32,*LPSTREAM32;
69 DECL_WINELIB_TYPE(IStream)
70 DECL_WINELIB_TYPE(LPSTREAM)
73 /*****************************************************************************
76 * See IStorage and IStream
78 #define STGM_DIRECT 0x00000000
79 #define STGM_TRANSACTED 0x00010000
80 #define STGM_SIMPLE 0x08000000
81 #define STGM_READ 0x00000000
82 #define STGM_WRITE 0x00000001
83 #define STGM_READWRITE 0x00000002
84 #define STGM_SHARE_DENY_NONE 0x00000040
85 #define STGM_SHARE_DENY_READ 0x00000030
86 #define STGM_SHARE_DENY_WRITE 0x00000020
87 #define STGM_SHARE_EXCLUSIVE 0x00000010
88 #define STGM_PRIORITY 0x00040000
89 #define STGM_DELETEONRELEASE 0x04000000
90 #define STGM_CREATE 0x00001000
91 #define STGM_CONVERT 0x00020000
92 #define STGM_FAILIFTHERE 0x00000000
93 #define STGM_NOSCRATCH 0x00100000
94 #define STGM_NOSNAPSHOT 0x00200000
97 /*****************************************************************************
103 ULARGE_INTEGER cbSize;
108 DWORD grfLocksSupported;
115 /*****************************************************************************
116 * IEnumSTATSTG interface
118 /* FIXME: not implemented */
121 /*****************************************************************************
122 * IFillLockBytes interface
124 /* FIXME: not implemented */
127 /*****************************************************************************
128 * ILayoutStorage interface
130 /* FIXME: not implemented */
133 /*****************************************************************************
134 * ILockBytes interface
136 /* FIXME: not implemented */
139 /*****************************************************************************
142 #define ICOM_INTERFACE IPersist
143 ICOM_BEGIN(IPersist,IUnknown)
144 ICOM_CMETHOD1(HRESULT,GetClassID, CLSID*,pClassID);
146 #undef ICOM_INTERFACE
148 #if !defined(__cplusplus) || defined(CINTERFACE)
149 /*** IUnknown methods ***/
150 #define IPersist_QueryInterface(p,a,b) ICOM_ICALL2(IUnknown,QueryInterface,p,a,b)
151 #define IPersist_AddRef(p) ICOM_ICALL (IUnknown,AddRef,p)
152 #define IPersist_Release(p) ICOM_ICALL (IUnknown,Release,p)
153 /*** IPersist methods ***/
154 #define IPersist_GetClassID(p,a) ICOM_CALL1(GetClassID,p,a)
158 /*****************************************************************************
159 * IPersistFile interface
161 #define ICOM_INTERFACE IPersistFile
162 ICOM_BEGIN(IPersistFile,IPersist)
163 ICOM_CMETHOD (HRESULT,IsDirty);
164 ICOM_METHOD2 (HRESULT,Load, LPCOLESTR32,pszFileName, DWORD,dwMode);
165 ICOM_METHOD2 (HRESULT,Save, LPCOLESTR32,pszFileName, BOOL32,fRemember);
166 ICOM_METHOD1 (HRESULT,SaveCompleted, LPCOLESTR32,pszFileName);
167 ICOM_CMETHOD1(HRESULT,GetCurFile, LPOLESTR32*,ppszFileName);
168 ICOM_END(IPersistFile)
169 #undef ICOM_INTERFACE
171 #if !defined(__cplusplus) || defined(CINTERFACE)
172 /*** IUnknown methods ***/
173 #define IPersistFile_QueryInterface(p,a,b) ICOM_ICALL2(IUnknown,QueryInterface,p,a,b)
174 #define IPersistFile_AddRef(p) ICOM_ICALL (IUnknown,AddRef,p)
175 #define IPersistFile_Release(p) ICOM_ICALL (IUnknown,Release,p)
176 /*** IPersist methods ***/
177 #define IPersistFile_GetClassID(p,a) ICOM_ICALL1(IPersist,GetClassID,p,a)
178 /*** IPersistFile methods ***/
179 #define IPersistFile_IsDirty(p) ICOM_CALL(IsDirty,p)
180 #define IPersistFile_Load(p,a,b) ICOM_CALL2(Load,p,a,b)
181 #define IPersistFile_Save(p,a,b) ICOM_CALL2(Save,p,a,b)
182 #define IPersistFile_SaveCompleted(p,a) ICOM_CALL1(SaveCompleted,p,a)
183 #define IPersistFile_GetCurFile(p,a) ICOM_CALL1(GetCurFile,p,a)
187 /*****************************************************************************
188 * IPersistStorage interface
190 /* FIXME: not implemented */
193 /*****************************************************************************
194 * IPersistStream interface
196 #define ICOM_INTERFACE IPersistStream
197 ICOM_BEGIN(IPersistStream,IPersist);
198 ICOM_METHOD(HRESULT, IsDirty);
199 ICOM_METHOD1(HRESULT, Load, IStream32*, pStm);
200 ICOM_METHOD2(HRESULT, Save, IStream32*, pStm, BOOL32, fClearDirty);
201 ICOM_METHOD1(HRESULT, GetSizeMax, ULARGE_INTEGER*, pcbSize);
202 ICOM_END(IPersistStream)
203 #undef ICOM_INTERFACE
205 #if !defined(__cplusplus) || defined(CINTERFACE)
206 /*** IUnknown methods ***/
207 #define IPersistStream_QueryInterface(p,a,b) ICOM_ICALL2(IUnknown,QueryInterface,p,a,b)
208 #define IPersistStream_AddRef(p) ICOM_ICALL(IUnknown,AddRef,p)
209 #define IPersistStream_Release(p) ICOM_ICALL(IUnknown,Release,p)
210 /*** IPersist methods ***/
211 #define IPersistStream_GetClassID(p,a) ICOM_ICALL1(IPersist,GetClassID,p,a)
212 /*** IPersistStream ***/
213 #define IPersist_Stream_IsDirty(p) ICOM_CALL(IsDirty,p)
214 #define IPersist_Stream_Load(p,a) ICOM_CALL1(Load,p,a)
215 #define IPersist_Stream_Save(p,a,b) ICOM_CALL2(Save,p,a,b)
216 #define IPersist_Stream_GetSizeMax(p,a) ICOM_CALL(GetSizeMax,p)
220 /*****************************************************************************
221 * IProgressNotify interface
223 /* FIXME: not implemented */
226 /*****************************************************************************
227 * IRootStorage interface
229 /* FIXME: not implemented */
232 /*****************************************************************************
233 * ISequentialStream interface
235 #define ICOM_INTERFACE ISequentialStream
236 ICOM_BEGIN(ISequentialStream,IUnknown)
237 ICOM_METHOD3(HRESULT,Read, void*,pv, ULONG,cb, ULONG*,pcbRead);
238 ICOM_METHOD3(HRESULT,Write, const void*,pv, ULONG,cb, ULONG*,pcbWritten);
239 ICOM_END(ISequentialStream)
240 #undef ICOM_INTERFACE
242 #if !defined(__cplusplus) || defined(CINTERFACE)
243 /*** IUnknown methods ***/
244 #define ISequentialStream_QueryInterface(p,a,b) ICOM_ICALL2(IUnknown,QueryInterface,p,a,b)
245 #define ISequentialStream_AddRef(p) ICOM_ICALL (IUnknown,AddRef,p)
246 #define ISequentialStream_Release(p) ICOM_ICALL (IUnknown,Release,p)
247 /*** ISequentialStream methods ***/
248 #define ISequentialStream_Read(p,a,b,c) ICOM_CALL3(Read,p,a,b,c)
249 #define ISequentialStream_Write(p,a,b,c) ICOM_CALL3(Write,p,a,b,c)
253 /*****************************************************************************
256 #define ICOM_INTERFACE IStorage16
257 ICOM_BEGIN(IStorage16,IUnknown)
258 ICOM_METHOD5(HRESULT,CreateStream, LPCOLESTR16,pwcsName, DWORD,grfMode, DWORD,reserved1, DWORD,reserved2, IStream16**,ppstm)
259 ICOM_METHOD5(HRESULT,OpenStream, LPCOLESTR16,pwcsName, void*,reserved1, DWORD,grfMode, DWORD,reserved2, IStream16**,ppstm)
260 ICOM_METHOD5(HRESULT,CreateStorage, LPCOLESTR16,pwcsName, DWORD,grfMode, DWORD,dwStgFmt, DWORD,reserved2, IStorage16**,ppstg)
261 ICOM_METHOD6(HRESULT,OpenStorage, LPCOLESTR16,pwcsName, IStorage16*,pstgPriority, DWORD,grfMode, SNB16,snb16Exclude, DWORD,reserved, IStorage16**,ppstg)
262 ICOM_METHOD4(HRESULT,CopyTo, DWORD,ciidExclude, const IID*,rgiidExclude, SNB16,snb16Exclude, IStorage16*,pstgDest)
263 ICOM_METHOD4(HRESULT,MoveElementTo, LPCOLESTR16,pwcsName, IStorage16*,pstgDest, LPCOLESTR16,pwcsNewName, DWORD,grfFlags)
264 ICOM_METHOD1(HRESULT,Commit, DWORD,grfCommitFlags)
265 ICOM_METHOD (HRESULT,Revert)
266 ICOM_METHOD4(HRESULT,EnumElements, DWORD,reserved1, void*,reserved2, DWORD,reserved3, IEnumSTATSTG**,ppenum)
267 ICOM_METHOD1(HRESULT,DestroyElement, LPCOLESTR16,pwcsName)
268 ICOM_METHOD2(HRESULT,RenameElement, LPCOLESTR16,pwcsOldName, LPCOLESTR16,pwcsNewName)
269 ICOM_METHOD4(HRESULT,SetElementTimes,LPCOLESTR16,pwcsName, const FILETIME*,pctime, const FILETIME*,patime, const FILETIME*,pmtime)
270 ICOM_METHOD1(HRESULT,SetClass, REFCLSID,clsid)
271 ICOM_METHOD2(HRESULT,SetStateBits, DWORD,grfStateBits, DWORD,grfMask)
272 ICOM_METHOD2(HRESULT,Stat, STATSTG*,pstatstg, DWORD,grfStatFlag)
274 #undef ICOM_INTERFACE
276 #if !defined(__cplusplus) || defined(CINTERFACE)
277 /*** IUnknown methods ***/
278 #define IStorage16_QueryInterface(p,a,b) ICOM_ICALL2(IUnknown,QueryInterface,p,a,b)
279 #define IStorage16_AddRef(p) ICOM_ICALL (IUnknown,AddRef,p)
280 #define IStorage16_Release(p) ICOM_ICALL (IUnknown,Release,p)
281 /*** IStorage16 methods ***/
282 #define IStorage16_CreateStream(p,a,b,c,d,e) ICOM_CALL5(CreateStream,p,a,b,c,d,e)
283 #define IStorage16_OpenStream(p,a,b,c,d,e) ICOM_CALL5(OpenStream,p,a,b,c,d,e)
284 #define IStorage16_CreateStorage(p,a,b,c,d,e) ICOM_CALL5(CreateStorage,p,a,b,c,d,e)
285 #define IStorage16_OpenStorage(p,a,b,c,d,e,f) ICOM_CALL6(OpenStorage,p,a,b,c,d,e,f)
286 #define IStorage16_CopyTo(p,a,b,c,d) ICOM_CALL4(CopyTo,p,a,b,c,d)
287 #define IStorage16_MoveElementTo(p,a,b,c,d) ICOM_CALL4(MoveElementTo,p,a,b,c,d)
288 #define IStorage16_Commit(p,a) ICOM_CALL1(Commit,p,a)
289 #define IStorage16_Revert(p) ICOM_CALL (Revert,p)
290 #define IStorage16_EnumElements(p,a,b,c,d) ICOM_CALL4(EnumElements,p,a,b,c,d)
291 #define IStorage16_DestroyElement(p,a) ICOM_CALL1(DestroyElement,p,a)
292 #define IStorage16_RenameElement(p,a,b) ICOM_CALL2(RenameElement,p,a,b)
293 #define IStorage16_SetElementTimes(p,a,b,c,d) ICOM_CALL4(SetElementTimes,p,a,b,c,d)
294 #define IStorage16_SetClass(p,a) ICOM_CALL1(SetClass,p,a)
295 #define IStorage16_SetStateBits(p,a,b) ICOM_CALL2(SetStateBits,p,a,b)
296 #define IStorage16_Stat(p,a,b) ICOM_CALL2(Stat,p,a,b)
300 #define ICOM_INTERFACE IStorage32
301 ICOM_BEGIN(IStorage32,IUnknown)
302 ICOM_METHOD5(HRESULT,CreateStream, LPCOLESTR32,pwcsName, DWORD,grfMode, DWORD,reserved1, DWORD,reserved2, IStream32**,ppstm);
303 ICOM_METHOD5(HRESULT,OpenStream, LPCOLESTR32,pwcsName, void*,reserved1, DWORD,grfMode, DWORD,reserved2, IStream32**,ppstm);
304 ICOM_METHOD5(HRESULT,CreateStorage, LPCOLESTR32,pwcsName, DWORD,grfMode, DWORD,dwStgFmt, DWORD,reserved2, IStorage32**,ppstg);
305 ICOM_METHOD6(HRESULT,OpenStorage, LPCOLESTR32,pwcsName, IStorage32*,pstgPriority, DWORD,grfMode, SNB32,snb16Exclude, DWORD,reserved, IStorage32**,ppstg);
306 ICOM_METHOD4(HRESULT,CopyTo, DWORD,ciidExclude, const IID*,rgiidExclude, SNB32,snb16Exclude, IStorage32*,pstgDest);
307 ICOM_METHOD4(HRESULT,MoveElementTo, LPCOLESTR32,pwcsName, IStorage32*,pstgDest, LPCOLESTR32,pwcsNewName, DWORD,grfFlags);
308 ICOM_METHOD1(HRESULT,Commit, DWORD,grfCommitFlags);
309 ICOM_METHOD (HRESULT,Revert);
310 ICOM_METHOD4(HRESULT,EnumElements, DWORD,reserved1, void*,reserved2, DWORD,reserved3, IEnumSTATSTG**,ppenum);
311 ICOM_METHOD1(HRESULT,DestroyElement, LPCOLESTR32,pwcsName);
312 ICOM_METHOD2(HRESULT,RenameElement, LPCOLESTR32,pwcsOldName, LPCOLESTR32,pwcsNewName);
313 ICOM_METHOD4(HRESULT,SetElementTimes,LPCOLESTR32,pwcsName, const FILETIME*,pctime, const FILETIME*,patime, const FILETIME*,pmtime);
314 ICOM_METHOD1(HRESULT,SetClass, REFCLSID,clsid);
315 ICOM_METHOD2(HRESULT,SetStateBits, DWORD,grfStateBits, DWORD,grfMask);
316 ICOM_METHOD2(HRESULT,Stat, STATSTG*,pstatstg, DWORD,grfStatFlag);
318 #undef ICOM_INTERFACE
320 #if !defined(__cplusplus) || defined(CINTERFACE)
321 /*** IUnknown methods ***/
322 #define IStorage32_QueryInterface(p,a,b) ICOM_ICALL2(IUnknown,QueryInterface,p,a,b)
323 #define IStorage32_AddRef(p) ICOM_ICALL (IUnknown,AddRef,p)
324 #define IStorage32_Release(p) ICOM_ICALL (IUnknown,Release,p)
325 /*** IStorage32 methods ***/
326 #define IStorage32_CreateStream(p,a,b,c,d,e) ICOM_CALL5(CreateStream,p,a,b,c,d,e)
327 #define IStorage32_OpenStream(p,a,b,c,d,e) ICOM_CALL5(OpenStream,p,a,b,c,d,e)
328 #define IStorage32_CreateStorage(p,a,b,c,d,e) ICOM_CALL5(CreateStorage,p,a,b,c,d,e)
329 #define IStorage32_OpenStorage(p,a,b,c,d,e,f) ICOM_CALL6(OpenStorage,p,a,b,c,d,e,f)
330 #define IStorage32_CopyTo(p,a,b,c,d) ICOM_CALL4(CopyTo,p,a,b,c,d)
331 #define IStorage32_MoveElementTo(p,a,b,c,d) ICOM_CALL4(MoveElementTo,p,a,b,c,d)
332 #define IStorage32_Commit(p,a) ICOM_CALL1(Commit,p,a)
333 #define IStorage32_Revert(p) ICOM_CALL (Revert,p)
334 #define IStorage32_EnumElements(p,a,b,c,d) ICOM_CALL4(EnumElements,p,a,b,c,d)
335 #define IStorage32_DestroyElement(p,a) ICOM_CALL1(DestroyElement,p,a)
336 #define IStorage32_RenameElement(p,a,b) ICOM_CALL2(RenameElement,p,a,b)
337 #define IStorage32_SetElementTimes(p,a,b,c,d) ICOM_CALL4(SetElementTimes,p,a,b,c,d)
338 #define IStorage32_SetClass(p,a) ICOM_CALL1(SetClass,p,a)
339 #define IStorage32_SetStateBits(p,a,b) ICOM_CALL2(SetStateBits,p,a,b)
340 #define IStorage32_Stat(p,a,b) ICOM_CALL2(Stat,p,a,b)
343 /* Duplicated for WINELIB */
344 /*** IUnknown methods ***/
345 #define IStorage_QueryInterface(p,a,b) ICOM_ICALL2(IUnknown,QueryInterface,p,a,b)
346 #define IStorage_AddRef(p) ICOM_ICALL (IUnknown,AddRef,p)
347 #define IStorage_Release(p) ICOM_ICALL (IUnknown,Release,p)
348 /*** IStorage methods ***/
349 #define IStorage_CreateStream(p,a,b,c,d,e) ICOM_CALL5(CreateStream,p,a,b,c,d,e)
350 #define IStorage_OpenStream(p,a,b,c,d,e) ICOM_CALL5(OpenStream,p,a,b,c,d,e)
351 #define IStorage_CreateStorage(p,a,b,c,d,e) ICOM_CALL5(CreateStorage,p,a,b,c,d,e)
352 #define IStorage_OpenStorage(p,a,b,c,d,e,f) ICOM_CALL6(OpenStorage,p,a,b,c,d,e,f)
353 #define IStorage_CopyTo(p,a,b,c,d) ICOM_CALL4(CopyTo,p,a,b,c,d)
354 #define IStorage_MoveElementTo(p,a,b,c,d) ICOM_CALL4(MoveElementTo,p,a,b,c,d)
355 #define IStorage_Commit(p,a) ICOM_CALL1(Commit,p,a)
356 #define IStorage_Revert(p) ICOM_CALL (Revert,p)
357 #define IStorage_EnumElements(p,a,b,c,d) ICOM_CALL4(EnumElements,p,a,b,c,d)
358 #define IStorage_DestroyElement(p,a) ICOM_CALL1(DestroyElement,p,a)
359 #define IStorage_RenameElement(p,a,b) ICOM_CALL2(RenameElement,p,a,b)
360 #define IStorage_SetElementTimes(p,a,b,c,d) ICOM_CALL4(SetElementTimes,p,a,b,c,d)
361 #define IStorage_SetClass(p,a) ICOM_CALL1(SetClass,p,a)
362 #define IStorage_SetStateBits(p,a,b) ICOM_CALL2(SetStateBits,p,a,b)
363 #define IStorage_Stat(p,a,b) ICOM_CALL2(Stat,p,a,b)
368 /*****************************************************************************
371 #define ICOM_INTERFACE IStream16
372 ICOM_BEGIN(IStream16,ISequentialStream)
373 ICOM_METHOD3(HRESULT,Seek, LARGE_INTEGER,dlibMove, DWORD,dwOrigin, ULARGE_INTEGER*,plibNewPosition);
374 ICOM_METHOD1(HRESULT,SetSize, ULARGE_INTEGER,libNewSize);
375 ICOM_METHOD4(HRESULT,CopyTo, IStream16*,pstm, ULARGE_INTEGER,cb, ULARGE_INTEGER*,pcbRead, ULARGE_INTEGER*,pcbWritten);
376 ICOM_METHOD1(HRESULT,Commit, DWORD,grfCommitFlags);
377 ICOM_METHOD (HRESULT,Revert);
378 ICOM_METHOD3(HRESULT,LockRegion, ULARGE_INTEGER,libOffset, ULARGE_INTEGER,cb, DWORD,dwLockType);
379 ICOM_METHOD3(HRESULT,UnlockRegion,ULARGE_INTEGER,libOffset, ULARGE_INTEGER,cb, DWORD,dwLockType);
380 ICOM_METHOD2(HRESULT,Stat, STATSTG*,pstatstg, DWORD,grfStatFlag);
381 ICOM_METHOD1(HRESULT,Clone, IStream16**,ppstm);
383 #undef ICOM_INTERFACE
385 #if !defined(__cplusplus) || defined(CINTERFACE)
386 /*** IUnknown methods ***/
387 #define IStream16_QueryInterface(p,a,b) ICOM_ICALL2(IUnknown,QueryInterface,p,a,b)
388 #define IStream16_AddRef(p) ICOM_ICALL (IUnknown,AddRef,p)
389 #define IStream16_Release(p) ICOM_ICALL (IUnknown,Release,p)
390 /*** ISequentialStream methods ***/
391 #define IStream16_Read(p,a,b,c) ICOM_ICALL3(ISequentialStream,Read,p,a,b,c)
392 #define IStream16_Write(p,a,b,c) ICOM_ICALL3(ISequentialStream,Write,p,a,b,c)
393 /*** IStream16 methods ***/
394 #define IStream16_Seek(p) ICOM_CALL3(Seek,p)
395 #define IStream16_SetSize(p,a,b) ICOM_CALL1(SetSize,p,a,b)
396 #define IStream16_CopyTo(pa,b,c,d) ICOM_CALL4(CopyTo,pa,b,c,d)
397 #define IStream16_Commit(p,a) ICOM_CALL1(Commit,p,a)
398 #define IStream16_Revert(p) ICOM_CALL (Revert,p)
399 #define IStream16_LockRegion(pa,b,c) ICOM_CALL3(LockRegion,pa,b,c)
400 #define IStream16_UnlockRegion(p,a,b,c) ICOM_CALL3(UnlockRegion,p,a,b,c)
401 #define IStream16_Stat(p,a,b) ICOM_CALL2(Stat,p,a,b)
402 #define IStream16_Clone(p,a) ICOM_CALL1(Clone,p,a)
406 #define ICOM_INTERFACE IStream32
407 ICOM_BEGIN(IStream32,ISequentialStream)
408 ICOM_METHOD3(HRESULT,Seek, LARGE_INTEGER,dlibMove, DWORD,dwOrigin, ULARGE_INTEGER*,plibNewPosition);
409 ICOM_METHOD1(HRESULT,SetSize, ULARGE_INTEGER,libNewSize);
410 ICOM_METHOD4(HRESULT,CopyTo, IStream32*,pstm, ULARGE_INTEGER,cb, ULARGE_INTEGER*,pcbRead, ULARGE_INTEGER*,pcbWritten);
411 ICOM_METHOD1(HRESULT,Commit, DWORD,grfCommitFlags);
412 ICOM_METHOD (HRESULT,Revert);
413 ICOM_METHOD3(HRESULT,LockRegion, ULARGE_INTEGER,libOffset, ULARGE_INTEGER,cb, DWORD,dwLockType);
414 ICOM_METHOD3(HRESULT,UnlockRegion,ULARGE_INTEGER,libOffset, ULARGE_INTEGER,cb, DWORD,dwLockType);
415 ICOM_METHOD2(HRESULT,Stat, STATSTG*,pstatstg, DWORD,grfStatFlag);
416 ICOM_METHOD1(HRESULT,Clone, IStream32**,ppstm);
418 #undef ICOM_INTERFACE
420 #if !defined(__cplusplus) || defined(CINTERFACE)
421 /*** IUnknown methods ***/
422 #define IStream32_QueryInterface(p,a,b) ICOM_ICALL2(IUnknown,QueryInterface,p,a,b)
423 #define IStream32_AddRef(p) ICOM_ICALL (IUnknown,AddRef,p)
424 #define IStream32_Release(p) ICOM_ICALL (IUnknown,Release,p)
425 /*** ISequentialStream methods ***/
426 #define IStream32_Read(p,a,b,c) ICOM_ICALL3(ISequentialStream,Read,p,a,b,c)
427 #define IStream32_Write(p,a,b,c) ICOM_ICALL3(ISequentialStream,Write,p,a,b,c)
428 /*** IStream32 methods ***/
429 #define IStream32_Seek(p) ICOM_CALL3(Seek,p)
430 #define IStream32_SetSize(p,a,b) ICOM_CALL1(SetSize,p,a,b)
431 #define IStream32_CopyTo(pa,b,c,d) ICOM_CALL4(CopyTo,pa,b,c,d)
432 #define IStream32_Commit(p,a) ICOM_CALL1(Commit,p,a)
433 #define IStream32_Revert(p) ICOM_CALL (Revert,p)
434 #define IStream32_LockRegion(pa,b,c) ICOM_CALL3(LockRegion,pa,b,c)
435 #define IStream32_UnlockRegion(p,a,b,c) ICOM_CALL3(UnlockRegion,p,a,b,c)
436 #define IStream32_Stat(p,a,b) ICOM_CALL2(Stat,p,a,b)
437 #define IStream32_Clone(p,a) ICOM_CALL1(Clone,p,a)
440 /* Duplicated for WINELIB */
441 /*** IUnknown methods ***/
442 #define IStream_QueryInterface(p,a,b) ICOM_ICALL2(IUnknown,QueryInterface,p,a,b)
443 #define IStream_AddRef(p) ICOM_ICALL (IUnknown,AddRef,p)
444 #define IStream_Release(p) ICOM_ICALL (IUnknown,Release,p)
445 /*** ISequentialStream methods ***/
446 #define IStream_Read(p,a,b,c) ICOM_ICALL3(ISequentialStream,Read,p,a,b,c)
447 #define IStream_Write(p,a,b,c) ICOM_ICALL3(ISequentialStream,Write,p,a,b,c)
448 /*** IStream methods ***/
449 #define IStream_Seek(p) ICOM_CALL3(Seek,p)
450 #define IStream_SetSize(p,a,b) ICOM_CALL1(SetSize,p,a,b)
451 #define IStream_CopyTo(pa,b,c,d) ICOM_CALL4(CopyTo,pa,b,c,d)
452 #define IStream_Commit(p,a) ICOM_CALL1(Commit,p,a)
453 #define IStream_Revert(p) ICOM_CALL (Revert,p)
454 #define IStream_LockRegion(pa,b,c) ICOM_CALL3(LockRegion,pa,b,c)
455 #define IStream_UnlockRegion(p,a,b,c) ICOM_CALL3(UnlockRegion,p,a,b,c)
456 #define IStream_Stat(p,a,b) ICOM_CALL2(Stat,p,a,b)
457 #define IStream_Clone(p,a) ICOM_CALL1(Clone,p,a)
462 /*****************************************************************************
465 /* FIXME: many functions are missing */
466 HRESULT WINAPI StgCreateDocFile16(LPCOLESTR16 pwcsName,DWORD grfMode,DWORD reserved,IStorage16 **ppstgOpen);
467 HRESULT WINAPI StgCreateDocfile32(LPCOLESTR32 pwcsName,DWORD grfMode,DWORD reserved,IStorage32 **ppstgOpen);
468 #define StgCreateDocfile WINELIB_NAME(StgCreateDocfile)
470 HRESULT WINAPI StgIsStorageFile16(LPCOLESTR16 fn);
471 HRESULT WINAPI StgIsStorageFile32(LPCOLESTR32 fn);
472 #define StgIsStorageFile WINELIB_NAME(StgIsStorageFile)
474 HRESULT WINAPI StgOpenStorage16(const OLECHAR16* pwcsName,IStorage16* pstgPriority,DWORD grfMode,SNB16 snbExclude,DWORD reserved,IStorage16**ppstgOpen);
475 HRESULT WINAPI StgOpenStorage32(const OLECHAR32* pwcsName,IStorage32* pstgPriority,DWORD grfMode,SNB32 snbExclude,DWORD reserved,IStorage32**ppstgOpen);
476 #define StgOpenStorage WINELIB_NAME(StgOpenStorage)
480 #endif /* __WINE_WINE_OBJ_STORAGE_H */