2 * Defines the COM interfaces and APIs related to structured data storage.
5 #ifndef __WINE_WINE_OBJ_STORAGE_H
6 #define __WINE_WINE_OBJ_STORAGE_H
10 #include "wine/obj_base.h"
12 /*****************************************************************************
13 * Predeclare the structures
15 typedef enum tagLOCKTYPE
22 typedef struct tagStorageLayout
25 OLECHAR16* pwcsElementName;
26 LARGE_INTEGER cOffset;
30 typedef struct tagSTATSTG {
33 ULARGE_INTEGER cbSize;
38 DWORD grfLocksSupported;
44 typedef LPOLESTR16 *SNB16;
45 typedef LPOLESTR *SNB;
48 /*****************************************************************************
49 * Predeclare the interfaces
51 DEFINE_OLEGUID(IID_IEnumSTATSTG, 0x0000000dL, 0, 0);
52 typedef struct IEnumSTATSTG IEnumSTATSTG,*LPENUMSTATSTG;
54 DEFINE_GUID (IID_IFillLockBytes, 0x99caf010L, 0x415e, 0x11cf, 0x88, 0x14, 0x00, 0xaa, 0x00, 0xb5, 0x69, 0xf5);
55 typedef struct IFillLockBytes IFillLockBytes,*LPFILLLOCKBYTES;
57 DEFINE_GUID (IID_ILayoutStorage, 0x0e6d4d90L, 0x6738, 0x11cf, 0x96, 0x08, 0x00, 0xaa, 0x00, 0x68, 0x0d, 0xb4);
58 typedef struct ILayoutStorage ILayoutStorage,*LPLAYOUTSTORAGE;
60 DEFINE_OLEGUID(IID_ILockBytes, 0x0000000aL, 0, 0);
61 typedef struct ILockBytes ILockBytes,*LPLOCKBYTES;
63 DEFINE_OLEGUID(IID_IPersist, 0x0000010cL, 0, 0);
64 typedef struct IPersist IPersist,*LPPERSIST;
66 DEFINE_OLEGUID(IID_IPersistFile, 0x0000010bL, 0, 0);
67 typedef struct IPersistFile IPersistFile,*LPPERSISTFILE;
69 DEFINE_OLEGUID(IID_IPersistStorage, 0x0000010aL, 0, 0);
70 typedef struct IPersistStorage IPersistStorage,*LPPERSISTSTORAGE;
72 DEFINE_OLEGUID(IID_IPersistStream, 0x00000109L, 0, 0);
73 typedef struct IPersistStream IPersistStream,*LPPERSISTSTREAM;
75 DEFINE_GUID (IID_IProgressNotify, 0xa9d758a0L, 0x4617, 0x11cf, 0x95, 0xfc, 0x00, 0xaa, 0x00, 0x68, 0x0d, 0xb4);
76 typedef struct IProgressNotify IProgressNotify,*LPPROGRESSNOTIFY;
78 DEFINE_OLEGUID(IID_IRootStorage, 0x00000012L, 0, 0);
79 typedef struct IRootStorage IRootStorage,*LPROOTSTORAGE;
81 DEFINE_GUID (IID_ISequentialStream, 0x0c733a30L, 0x2a1c, 0x11ce, 0xad, 0xe5, 0x00, 0xaa, 0x00, 0x44, 0x77, 0x3d);
82 typedef struct ISequentialStream ISequentialStream,*LPSEQUENTIALSTREAM;
84 DEFINE_OLEGUID(IID_IStorage, 0x0000000bL, 0, 0);
85 typedef struct IStorage16 IStorage16,*LPSTORAGE16;
86 typedef struct IStorage IStorage,*LPSTORAGE;
88 DEFINE_OLEGUID(IID_IStream, 0x0000000cL, 0, 0);
89 typedef struct IStream16 IStream16,*LPSTREAM16;
90 typedef struct IStream IStream,*LPSTREAM;
93 /*****************************************************************************
96 * See IStorage and IStream
98 #define STGM_DIRECT 0x00000000
99 #define STGM_TRANSACTED 0x00010000
100 #define STGM_SIMPLE 0x08000000
101 #define STGM_READ 0x00000000
102 #define STGM_WRITE 0x00000001
103 #define STGM_READWRITE 0x00000002
104 #define STGM_SHARE_DENY_NONE 0x00000040
105 #define STGM_SHARE_DENY_READ 0x00000030
106 #define STGM_SHARE_DENY_WRITE 0x00000020
107 #define STGM_SHARE_EXCLUSIVE 0x00000010
108 #define STGM_PRIORITY 0x00040000
109 #define STGM_DELETEONRELEASE 0x04000000
110 #define STGM_CREATE 0x00001000
111 #define STGM_CONVERT 0x00020000
112 #define STGM_FAILIFTHERE 0x00000000
113 #define STGM_NOSCRATCH 0x00100000
114 #define STGM_NOSNAPSHOT 0x00200000
116 /*****************************************************************************
121 #define STGTY_STORAGE 1
122 #define STGTY_STREAM 2
124 /*****************************************************************************
125 * STATFLAG enumeration
127 * See IStorage and IStream
129 #define STATFLAG_DEFAULT 0
130 #define STATFLAG_NONAME 1
132 /*****************************************************************************
133 * STREAM_SEEK enumeration
137 #define STREAM_SEEK_SET 0
138 #define STREAM_SEEK_CUR 1
139 #define STREAM_SEEK_END 2
141 /*****************************************************************************
142 * IEnumSTATSTG interface
144 #define ICOM_INTERFACE IEnumSTATSTG
145 #define IEnumSTATSTG_METHODS \
146 ICOM_METHOD3(HRESULT,Next, ULONG,celt, STATSTG*,rgelt, ULONG*,pceltFethed) \
147 ICOM_METHOD1(HRESULT,Skip, ULONG,celt) \
148 ICOM_METHOD (HRESULT,Reset) \
149 ICOM_METHOD1(HRESULT,Clone, IEnumSTATSTG**,ppenum)
150 #define IEnumSTATSTG_IMETHODS \
153 ICOM_DEFINE(IEnumSTATSTG,IUnknown)
154 #undef ICOM_INTERFACE
156 #ifdef ICOM_CINTERFACE
157 /*** IUnknown methods ***/
158 #define IEnumSTATSTG_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
159 #define IEnumSTATSTG_AddRef(p) ICOM_CALL (AddRef,p)
160 #define IEnumSTATSTG_Release(p) ICOM_CALL (Release,p)
161 /*** IEnumSTATSTG methods ***/
162 #define IEnumSTATSTG_Next(p,a,b,c) ICOM_CALL3(Next,p,a,b,c)
163 #define IEnumSTATSTG_Skip(p,a) ICOM_CALL1(Skip,p,a)
164 #define IEnumSTATSTG_Reset(p) ICOM_CALL(Reset,p)
165 #define IEnumSTATSTG_Clone(p,a) ICOM_CALL1(Clone,p,a)
169 /*****************************************************************************
170 * IFillLockBytes interface
172 #define ICOM_INTERFACE IFillLockBytes
173 #define IFillLockBytes_METHODS \
174 ICOM_METHOD3(HRESULT,FillAppend, const void*,pv, ULONG,cb, ULONG*,pcbWritten) \
175 ICOM_METHOD4(HRESULT,FillAt, ULARGE_INTEGER,ulOffset, const void*,pv, ULONG,cb, ULONG*,pcbWritten) \
176 ICOM_METHOD1(HRESULT,SetFillSize, ULARGE_INTEGER,ulSize) \
177 ICOM_METHOD1(HRESULT,Terminate, BOOL,bCanceled)
178 #define IFillLockBytes_IMETHODS \
180 IFillLockBytes_METHODS
181 ICOM_DEFINE(IFillLockBytes,IUnknown)
182 #undef ICOM_INTERFACE
184 #ifdef ICOM_CINTERFACE
185 /*** IUnknown methods ***/
186 #define IFillLockBytes_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
187 #define IFillLockBytes_AddRef(p) ICOM_CALL (AddRef,p)
188 #define IFillLockBytes_Release(p) ICOM_CALL (Release,p)
189 /*** IFillLockBytes methods ***/
190 #define IFillLockBytes_FillAppend(p,a,b,c) ICOM_CALL3(FillAppend,p,a,b,c)
191 #define IFillLockBytes_FillAt(p,a,b,c,d) ICOM_CALL4(FillAt,p,a,b,c,d)
192 #define IFillLockBytes_SetFillSize(p,a) ICOM_CALL1(SetFillSize,p,a)
193 #define IFillLockBytes_Terminate(p,a) ICOM_CALL1(Terminate,p,a)
197 /*****************************************************************************
198 * ILayoutStorage interface
200 #define ICOM_INTERFACE ILayoutStorage
201 #define ILayoutStorage_METHODS \
202 ICOM_METHOD2(HRESULT,LayoutScript, DWORD,nEntries, DWORD,glfInterleavedFlag) \
203 ICOM_METHOD (HRESULT,BeginMonitor) \
204 ICOM_METHOD (HRESULT,EndMonitor) \
205 ICOM_METHOD1(HRESULT,ReLayoutDocfile, OLECHAR16*,pwcsNewDfName) \
206 ICOM_METHOD1(HRESULT,ReLayoutDocfileOnILockBytes, ILockBytes*,pILockBytes)
207 #define ILayoutStorage_IMETHODS \
209 ILayoutStorage_METHODS
210 ICOM_DEFINE(ILayoutStorage,IUnknown)
211 #undef ICOM_INTERFACE
213 #ifdef ICOM_CINTERFACE
214 /*** IUnknown methods ***/
215 #define ILayoutStorage_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
216 #define ILayoutStorage_AddRef(p) ICOM_CALL (AddRef,p)
217 #define ILayoutStorage_Release(p) ICOM_CALL (Release,p)
218 /*** ILayoutStorage methods ***/
219 #define ILayoutStorage_LayoutScript(p,a,b) ICOM_CALL2(LayoutScript,p,a,b)
220 #define ILayoutStorage_BeginMonitor(p) ICOM_CALL (BeginMonitor,p)
221 #define ILayoutStorage_EndMonitor(p) ICOM_CALL (EndMonitor,p)
222 #define ILayoutStorage_ReLayoutDocfile(p,a) ICOM_CALL1(ReLayoutDocfile,p,a)
223 #define ILayoutStorage_ReLayoutDocfileOnILockBytes(p,a) ICOM_CALL1(ReLayoutDocfileOnILockBytes,p,a)
227 /*****************************************************************************
228 * ILockBytes interface
230 #define ICOM_INTERFACE ILockBytes
231 #define ILockBytes_METHODS \
232 ICOM_METHOD4(HRESULT,ReadAt, ULARGE_INTEGER,ulOffset, void*,pv, ULONG,cb, ULONG*,pcbRead) \
233 ICOM_METHOD4(HRESULT,WriteAt, ULARGE_INTEGER,ulOffset, const void*,pv, ULONG,cb, ULONG*,pcbWritten) \
234 ICOM_METHOD (HRESULT,Flush); \
235 ICOM_METHOD1(HRESULT,SetSize, ULARGE_INTEGER,cb) \
236 ICOM_METHOD3(HRESULT,LockRegion, ULARGE_INTEGER,libOffset, ULARGE_INTEGER,cb, DWORD,dwLockType) \
237 ICOM_METHOD3(HRESULT,UnlockRegion, ULARGE_INTEGER,libOffset, ULARGE_INTEGER,cb, DWORD,dwLockType) \
238 ICOM_METHOD2(HRESULT,Stat, STATSTG*,pstatstg, DWORD,grfStatFlag)
239 #define ILockBytes_IMETHODS \
242 ICOM_DEFINE(ILockBytes,IUnknown)
243 #undef ICOM_INTERFACE
245 #ifdef ICOM_CINTERFACE
246 /*** IUnknown methods ***/
247 #define ILockBytes_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
248 #define ILockBytes_AddRef(p) ICOM_CALL (AddRef,p)
249 #define ILockBytes_Release(p) ICOM_CALL (Release,p)
250 /*** ILockBytes methods ***/
251 #define ILockBytes_ReadAt(p,a,b,c,d) ICOM_CALL4(ReadAt,p,a,b,c,d)
252 #define ILockBytes_WriteAt(p,a,b,c,d) ICOM_CALL4(WriteAt,p,a,b,c,d)
253 #define ILockBytes_Flush(p) ICOM_CALL (Flush,p)
254 #define ILockBytes_SetSize(p,a) ICOM_CALL1(SetSize,p,a)
255 #define ILockBytes_LockRegion(p,a,b,c) ICOM_CALL3(LockRegion,p,a,b,c)
256 #define ILockBytes_UnlockRegion(p,a,b,c) ICOM_CALL3(UnlockRegion,p,a,b,c)
257 #define ILockBytes_Stat(p,a,b) ICOM_CALL2(Stat,p,a,b)
261 /*****************************************************************************
264 #define ICOM_INTERFACE IPersist
265 #define IPersist_METHODS \
266 ICOM_CMETHOD1(HRESULT,GetClassID, CLSID*,pClassID)
267 #define IPersist_IMETHODS \
270 ICOM_DEFINE(IPersist,IUnknown)
271 #undef ICOM_INTERFACE
273 #ifdef ICOM_CINTERFACE
274 /*** IUnknown methods ***/
275 #define IPersist_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
276 #define IPersist_AddRef(p) ICOM_CALL (AddRef,p)
277 #define IPersist_Release(p) ICOM_CALL (Release,p)
278 /*** IPersist methods ***/
279 #define IPersist_GetClassID(p,a) ICOM_CALL1(GetClassID,p,a)
283 /*****************************************************************************
284 * IPersistFile interface
286 #define ICOM_INTERFACE IPersistFile
287 #define IPersistFile_METHODS \
288 ICOM_CMETHOD (HRESULT,IsDirty) \
289 ICOM_METHOD2 (HRESULT,Load, LPCOLESTR,pszFileName, DWORD,dwMode) \
290 ICOM_METHOD2 (HRESULT,Save, LPCOLESTR,pszFileName, BOOL,fRemember) \
291 ICOM_METHOD1 (HRESULT,SaveCompleted, LPCOLESTR,pszFileName) \
292 ICOM_CMETHOD1(HRESULT,GetCurFile, LPOLESTR*,ppszFileName)
293 #define IPersistFile_IMETHODS \
296 ICOM_DEFINE(IPersistFile,IPersist)
297 #undef ICOM_INTERFACE
299 #ifdef ICOM_CINTERFACE
300 /*** IUnknown methods ***/
301 #define IPersistFile_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
302 #define IPersistFile_AddRef(p) ICOM_CALL (AddRef,p)
303 #define IPersistFile_Release(p) ICOM_CALL (Release,p)
304 /*** IPersist methods ***/
305 #define IPersistFile_GetClassID(p,a) ICOM_CALL1(GetClassID,p,a)
306 /*** IPersistFile methods ***/
307 #define IPersistFile_IsDirty(p) ICOM_CALL(IsDirty,p)
308 #define IPersistFile_Load(p,a,b) ICOM_CALL2(Load,p,a,b)
309 #define IPersistFile_Save(p,a,b) ICOM_CALL2(Save,p,a,b)
310 #define IPersistFile_SaveCompleted(p,a) ICOM_CALL1(SaveCompleted,p,a)
311 #define IPersistFile_GetCurFile(p,a) ICOM_CALL1(GetCurFile,p,a)
315 /*****************************************************************************
316 * IPersistStorage interface
318 #define ICOM_INTERFACE IPersistStorage
319 #define IPersistStorage_METHODS \
320 ICOM_METHOD (HRESULT,IsDirty) \
321 ICOM_METHOD1(HRESULT,InitNew, IStorage*,pStg) \
322 ICOM_METHOD1(HRESULT,Load, IStorage*,pStg) \
323 ICOM_METHOD2(HRESULT,Save, IStorage*,pStg, BOOL,fSameAsLoad) \
324 ICOM_METHOD1(HRESULT,SaveCompleted, IStorage*,pStgNew) \
325 ICOM_METHOD (HRESULT,HandsOffStorage)
326 #define IPersistStorage_IMETHODS \
328 IPersistStorage_METHODS
329 ICOM_DEFINE(IPersistStorage,IPersist)
330 #undef ICOM_INTERFACE
332 #ifdef ICOM_CINTERFACE
333 /*** IUnknown methods ***/
334 #define IPersistStorage_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
335 #define IPersistStorage_AddRef(p) ICOM_CALL (AddRef,p)
336 #define IPersistStorage_Release(p) ICOM_CALL (Release,p)
337 /*** IPersist methods ***/
338 #define IPersistStorage_GetClassID(p,a) ICOM_CALL1(GetClassID,p,a)
339 /*** IPersistStorage methods ***/
340 #define IPersistStorage_IsDirty(p) ICOM_CALL (IsDirty,p)
341 #define IPersistStorage_InitNew(p,a) ICOM_CALL1(InitNew,p,a)
342 #define IPersistStorage_Load(p,a) ICOM_CALL1(Load,p,a)
343 #define IPersistStorage_Save(p,a,b) ICOM_CALL2(Save,p,a,b)
344 #define IPersistStorage_SaveCompleted(p,a) ICOM_CALL1(SaveCompleted,p,a)
345 #define IPersistStorage_HandsOffStorage(p) ICOM_CALL (HandsOffStorage,p)
349 /*****************************************************************************
350 * IPersistStream interface
352 #define ICOM_INTERFACE IPersistStream
353 #define IPersistStream_METHODS \
354 ICOM_METHOD (HRESULT,IsDirty) \
355 ICOM_METHOD1(HRESULT,Load, IStream*,pStm) \
356 ICOM_METHOD2(HRESULT,Save, IStream*,pStm, BOOL,fClearDirty) \
357 ICOM_METHOD1(HRESULT,GetSizeMax, ULARGE_INTEGER*,pcbSize)
358 #define IPersistStream_IMETHODS \
360 IPersistStream_METHODS
361 ICOM_DEFINE(IPersistStream,IPersist)
362 #undef ICOM_INTERFACE
364 #ifdef ICOM_CINTERFACE
365 /*** IUnknown methods ***/
366 #define IPersistStream_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
367 #define IPersistStream_AddRef(p) ICOM_CALL (AddRef,p)
368 #define IPersistStream_Release(p) ICOM_CALL (Release,p)
369 /*** IPersist methods ***/
370 #define IPersistStream_GetClassID(p,a) ICOM_CALL1(GetClassID,p,a)
371 /*** IPersistStream methods ***/
372 #define IPersistStream_IsDirty(p) ICOM_CALL (IsDirty,p)
373 #define IPersistStream_Load(p,a) ICOM_CALL1(Load,p,a)
374 #define IPersistStream_Save(p,a,b) ICOM_CALL2(Save,p,a,b)
375 #define IPersistStream_GetSizeMax(p,a) ICOM_CALL1(GetSizeMax,p,a)
379 /*****************************************************************************
380 * IProgressNotify interface
382 #define ICOM_INTERFACE IProgressNotify
383 #define IProgressNotify_METHODS \
384 ICOM_METHOD4(HRESULT,OnProgress, DWORD,dwProgressCurrent, DWORD,dwProgressMaximum, BOOL,fAccurate, BOOL,fOwner)
385 #define IProgressNotify_IMETHODS \
387 IProgressNotify_METHODS
388 ICOM_DEFINE(IProgressNotify,IUnknown)
389 #undef ICOM_INTERFACE
391 #ifdef ICOM_CINTERFACE
392 /*** IUnknown methods ***/
393 #define IProgressNotify_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
394 #define IProgressNotify_AddRef(p) ICOM_CALL (AddRef,p)
395 #define IProgressNotify_Release(p) ICOM_CALL (Release,p)
396 /*** IProgressNotify methods ***/
397 #define IProgressNotify_OnProgress(p,a,b,c,d) ICOM_CALL4(OnProgress,p,a,b,c,d)
401 /*****************************************************************************
402 * IRootStorage interface
404 #define ICOM_INTERFACE IRootStorage
405 #define IRootStorage_METHODS \
406 ICOM_METHOD1(HRESULT,SwitchToFile, LPOLESTR,pszFile)
407 #define IRootStorage_IMETHODS \
410 ICOM_DEFINE(IRootStorage,IUnknown)
411 #undef ICOM_INTERFACE
413 #ifdef ICOM_CINTERFACE
414 /*** IUnknown methods ***/
415 #define IRootStorage_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
416 #define IRootStorage_AddRef(p) ICOM_CALL (AddRef,p)
417 #define IRootStorage_Release(p) ICOM_CALL (Release,p)
418 /*** IRootStorage methods ***/
419 #define IRootStorage_SwitchToFile(p,a) ICOM_CALLSwitchToFile(,p,a)
423 /*****************************************************************************
424 * ISequentialStream interface
426 #define ICOM_INTERFACE ISequentialStream
427 #define ISequentialStream_METHODS \
428 ICOM_METHOD3(HRESULT,Read, void*,pv, ULONG,cb, ULONG*,pcbRead) \
429 ICOM_METHOD3(HRESULT,Write, const void*,pv, ULONG,cb, ULONG*,pcbWritten)
430 #define ISequentialStream_IMETHODS \
432 ISequentialStream_METHODS
433 ICOM_DEFINE(ISequentialStream,IUnknown)
434 #undef ICOM_INTERFACE
436 #ifdef ICOM_CINTERFACE
437 /*** IUnknown methods ***/
438 #define ISequentialStream_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
439 #define ISequentialStream_AddRef(p) ICOM_CALL (AddRef,p)
440 #define ISequentialStream_Release(p) ICOM_CALL (Release,p)
441 /*** ISequentialStream methods ***/
442 #define ISequentialStream_Read(p,a,b,c) ICOM_CALL3(Read,p,a,b,c)
443 #define ISequentialStream_Write(p,a,b,c) ICOM_CALL3(Write,p,a,b,c)
447 /*****************************************************************************
450 #define ICOM_INTERFACE IStorage16
451 #define IStorage16_METHODS \
452 ICOM_METHOD5(HRESULT,CreateStream, LPCOLESTR16,pwcsName, DWORD,grfMode, DWORD,reserved1, DWORD,reserved2, IStream16**,ppstm) \
453 ICOM_METHOD5(HRESULT,OpenStream, LPCOLESTR16,pwcsName, void*,reserved1, DWORD,grfMode, DWORD,reserved2, IStream16**,ppstm) \
454 ICOM_METHOD5(HRESULT,CreateStorage, LPCOLESTR16,pwcsName, DWORD,grfMode, DWORD,dwStgFmt, DWORD,reserved2, IStorage16**,ppstg) \
455 ICOM_METHOD6(HRESULT,OpenStorage, LPCOLESTR16,pwcsName, IStorage16*,pstgPriority, DWORD,grfMode, SNB16,snb16Exclude, DWORD,reserved, IStorage16**,ppstg) \
456 ICOM_METHOD4(HRESULT,CopyTo, DWORD,ciidExclude, const IID*,rgiidExclude, SNB16,snb16Exclude, IStorage16*,pstgDest) \
457 ICOM_METHOD4(HRESULT,MoveElementTo, LPCOLESTR16,pwcsName, IStorage16*,pstgDest, LPCOLESTR16,pwcsNewName, DWORD,grfFlags) \
458 ICOM_METHOD1(HRESULT,Commit, DWORD,grfCommitFlags) \
459 ICOM_METHOD (HRESULT,Revert) \
460 ICOM_METHOD4(HRESULT,EnumElements, DWORD,reserved1, void*,reserved2, DWORD,reserved3, IEnumSTATSTG**,ppenum) \
461 ICOM_METHOD1(HRESULT,DestroyElement, LPCOLESTR16,pwcsName) \
462 ICOM_METHOD2(HRESULT,RenameElement, LPCOLESTR16,pwcsOldName, LPOLESTR16,pwcsNewName) \
463 ICOM_METHOD4(HRESULT,SetElementTimes,LPCOLESTR16,pwcsName, const FILETIME*,pctime, const FILETIME*,patime, const FILETIME*,pmtime) \
464 ICOM_METHOD1(HRESULT,SetClass, REFCLSID,clsid) \
465 ICOM_METHOD2(HRESULT,SetStateBits, DWORD,grfStateBits, DWORD,grfMask) \
466 ICOM_METHOD2(HRESULT,Stat, STATSTG*,pstatstg, DWORD,grfStatFlag)
467 #define IStorage16_IMETHODS \
470 ICOM_DEFINE(IStorage16,IUnknown)
471 #undef ICOM_INTERFACE
473 #ifdef ICOM_CINTERFACE
474 /*** IUnknown methods ***/
475 #define IStorage16_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
476 #define IStorage16_AddRef(p) ICOM_CALL (AddRef,p)
477 #define IStorage16_Release(p) ICOM_CALL (Release,p)
478 /*** IStorage16 methods ***/
479 #define IStorage16_CreateStream(p,a,b,c,d,e) ICOM_CALL5(CreateStream,p,a,b,c,d,e)
480 #define IStorage16_OpenStream(p,a,b,c,d,e) ICOM_CALL5(OpenStream,p,a,b,c,d,e)
481 #define IStorage16_CreateStorage(p,a,b,c,d,e) ICOM_CALL5(CreateStorage,p,a,b,c,d,e)
482 #define IStorage16_OpenStorage(p,a,b,c,d,e,f) ICOM_CALL6(OpenStorage,p,a,b,c,d,e,f)
483 #define IStorage16_CopyTo(p,a,b,c,d) ICOM_CALL4(CopyTo,p,a,b,c,d)
484 #define IStorage16_MoveElementTo(p,a,b,c,d) ICOM_CALL4(MoveElementTo,p,a,b,c,d)
485 #define IStorage16_Commit(p,a) ICOM_CALL1(Commit,p,a)
486 #define IStorage16_Revert(p) ICOM_CALL (Revert,p)
487 #define IStorage16_EnumElements(p,a,b,c,d) ICOM_CALL4(EnumElements,p,a,b,c,d)
488 #define IStorage16_DestroyElement(p,a) ICOM_CALL1(DestroyElement,p,a)
489 #define IStorage16_RenameElement(p,a,b) ICOM_CALL2(RenameElement,p,a,b)
490 #define IStorage16_SetElementTimes(p,a,b,c,d) ICOM_CALL4(SetElementTimes,p,a,b,c,d)
491 #define IStorage16_SetClass(p,a) ICOM_CALL1(SetClass,p,a)
492 #define IStorage16_SetStateBits(p,a,b) ICOM_CALL2(SetStateBits,p,a,b)
493 #define IStorage16_Stat(p,a,b) ICOM_CALL2(Stat,p,a,b)
497 #define ICOM_INTERFACE IStorage
498 #define IStorage_METHODS \
499 ICOM_METHOD5(HRESULT,CreateStream, LPCOLESTR,pwcsName, DWORD,grfMode, DWORD,reserved1, DWORD,reserved2, IStream**,ppstm) \
500 ICOM_METHOD5(HRESULT,OpenStream, LPCOLESTR,pwcsName, void*,reserved1, DWORD,grfMode, DWORD,reserved2, IStream**,ppstm) \
501 ICOM_METHOD5(HRESULT,CreateStorage, LPCOLESTR,pwcsName, DWORD,grfMode, DWORD,dwStgFmt, DWORD,reserved2, IStorage**,ppstg) \
502 ICOM_METHOD6(HRESULT,OpenStorage, LPCOLESTR,pwcsName, IStorage*,pstgPriority, DWORD,grfMode, SNB,snb16Exclude, DWORD,reserved, IStorage**,ppstg) \
503 ICOM_METHOD4(HRESULT,CopyTo, DWORD,ciidExclude, const IID*,rgiidExclude, SNB,snb16Exclude, IStorage*,pstgDest) \
504 ICOM_METHOD4(HRESULT,MoveElementTo, LPCOLESTR,pwcsName, IStorage*,pstgDest, LPCOLESTR,pwcsNewName, DWORD,grfFlags) \
505 ICOM_METHOD1(HRESULT,Commit, DWORD,grfCommitFlags) \
506 ICOM_METHOD (HRESULT,Revert) \
507 ICOM_METHOD4(HRESULT,EnumElements, DWORD,reserved1, void*,reserved2, DWORD,reserved3, IEnumSTATSTG**,ppenum) \
508 ICOM_METHOD1(HRESULT,DestroyElement, LPCOLESTR,pwcsName) \
509 ICOM_METHOD2(HRESULT,RenameElement, LPCOLESTR,pwcsOldName, LPCOLESTR,pwcsNewName) \
510 ICOM_METHOD4(HRESULT,SetElementTimes,LPCOLESTR,pwcsName, const FILETIME*,pctime, const FILETIME*,patime, const FILETIME*,pmtime) \
511 ICOM_METHOD1(HRESULT,SetClass, REFCLSID,clsid) \
512 ICOM_METHOD2(HRESULT,SetStateBits, DWORD,grfStateBits, DWORD,grfMask) \
513 ICOM_METHOD2(HRESULT,Stat, STATSTG*,pstatstg, DWORD,grfStatFlag)
514 #define IStorage_IMETHODS \
517 ICOM_DEFINE(IStorage,IUnknown)
518 #undef ICOM_INTERFACE
520 #ifdef ICOM_CINTERFACE
521 /*** IUnknown methods ***/
522 #define IStorage_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
523 #define IStorage_AddRef(p) ICOM_CALL (AddRef,p)
524 #define IStorage_Release(p) ICOM_CALL (Release,p)
525 /*** IStorage32 methods ***/
526 #define IStorage_CreateStream(p,a,b,c,d,e) ICOM_CALL5(CreateStream,p,a,b,c,d,e)
527 #define IStorage_OpenStream(p,a,b,c,d,e) ICOM_CALL5(OpenStream,p,a,b,c,d,e)
528 #define IStorage_CreateStorage(p,a,b,c,d,e) ICOM_CALL5(CreateStorage,p,a,b,c,d,e)
529 #define IStorage_OpenStorage(p,a,b,c,d,e,f) ICOM_CALL6(OpenStorage,p,a,b,c,d,e,f)
530 #define IStorage_CopyTo(p,a,b,c,d) ICOM_CALL4(CopyTo,p,a,b,c,d)
531 #define IStorage_MoveElementTo(p,a,b,c,d) ICOM_CALL4(MoveElementTo,p,a,b,c,d)
532 #define IStorage_Commit(p,a) ICOM_CALL1(Commit,p,a)
533 #define IStorage_Revert(p) ICOM_CALL (Revert,p)
534 #define IStorage_EnumElements(p,a,b,c,d) ICOM_CALL4(EnumElements,p,a,b,c,d)
535 #define IStorage_DestroyElement(p,a) ICOM_CALL1(DestroyElement,p,a)
536 #define IStorage_RenameElement(p,a,b) ICOM_CALL2(RenameElement,p,a,b)
537 #define IStorage_SetElementTimes(p,a,b,c,d) ICOM_CALL4(SetElementTimes,p,a,b,c,d)
538 #define IStorage_SetClass(p,a) ICOM_CALL1(SetClass,p,a)
539 #define IStorage_SetStateBits(p,a,b) ICOM_CALL2(SetStateBits,p,a,b)
540 #define IStorage_Stat(p,a,b) ICOM_CALL2(Stat,p,a,b)
543 /* Duplicated for WINELIB */
544 /*** IUnknown methods ***/
545 #define IStorage_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
546 #define IStorage_AddRef(p) ICOM_CALL (AddRef,p)
547 #define IStorage_Release(p) ICOM_CALL (Release,p)
548 /*** IStorage methods ***/
549 #define IStorage_CreateStream(p,a,b,c,d,e) ICOM_CALL5(CreateStream,p,a,b,c,d,e)
550 #define IStorage_OpenStream(p,a,b,c,d,e) ICOM_CALL5(OpenStream,p,a,b,c,d,e)
551 #define IStorage_CreateStorage(p,a,b,c,d,e) ICOM_CALL5(CreateStorage,p,a,b,c,d,e)
552 #define IStorage_OpenStorage(p,a,b,c,d,e,f) ICOM_CALL6(OpenStorage,p,a,b,c,d,e,f)
553 #define IStorage_CopyTo(p,a,b,c,d) ICOM_CALL4(CopyTo,p,a,b,c,d)
554 #define IStorage_MoveElementTo(p,a,b,c,d) ICOM_CALL4(MoveElementTo,p,a,b,c,d)
555 #define IStorage_Commit(p,a) ICOM_CALL1(Commit,p,a)
556 #define IStorage_Revert(p) ICOM_CALL (Revert,p)
557 #define IStorage_EnumElements(p,a,b,c,d) ICOM_CALL4(EnumElements,p,a,b,c,d)
558 #define IStorage_DestroyElement(p,a) ICOM_CALL1(DestroyElement,p,a)
559 #define IStorage_RenameElement(p,a,b) ICOM_CALL2(RenameElement,p,a,b)
560 #define IStorage_SetElementTimes(p,a,b,c,d) ICOM_CALL4(SetElementTimes,p,a,b,c,d)
561 #define IStorage_SetClass(p,a) ICOM_CALL1(SetClass,p,a)
562 #define IStorage_SetStateBits(p,a,b) ICOM_CALL2(SetStateBits,p,a,b)
563 #define IStorage_Stat(p,a,b) ICOM_CALL2(Stat,p,a,b)
568 /*****************************************************************************
571 #define ICOM_INTERFACE IStream16
572 #define IStream16_METHODS \
573 ICOM_METHOD3(HRESULT,Seek, LARGE_INTEGER,dlibMove, DWORD,dwOrigin, ULARGE_INTEGER*,plibNewPosition) \
574 ICOM_METHOD1(HRESULT,SetSize, ULARGE_INTEGER,libNewSize) \
575 ICOM_METHOD4(HRESULT,CopyTo, IStream16*,pstm, ULARGE_INTEGER,cb, ULARGE_INTEGER*,pcbRead, ULARGE_INTEGER*,pcbWritten) \
576 ICOM_METHOD1(HRESULT,Commit, DWORD,grfCommitFlags) \
577 ICOM_METHOD (HRESULT,Revert) \
578 ICOM_METHOD3(HRESULT,LockRegion, ULARGE_INTEGER,libOffset, ULARGE_INTEGER,cb, DWORD,dwLockType) \
579 ICOM_METHOD3(HRESULT,UnlockRegion,ULARGE_INTEGER,libOffset, ULARGE_INTEGER,cb, DWORD,dwLockType) \
580 ICOM_METHOD2(HRESULT,Stat, STATSTG*,pstatstg, DWORD,grfStatFlag) \
581 ICOM_METHOD1(HRESULT,Clone, IStream16**,ppstm)
582 #define IStream16_IMETHODS \
583 ISequentialStream_IMETHODS \
585 ICOM_DEFINE(IStream16,ISequentialStream)
586 #undef ICOM_INTERFACE
588 #ifdef ICOM_CINTERFACE
589 /*** IUnknown methods ***/
590 #define IStream16_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
591 #define IStream16_AddRef(p) ICOM_CALL (AddRef,p)
592 #define IStream16_Release(p) ICOM_CALL (Release,p)
593 /*** ISequentialStream methods ***/
594 #define IStream16_Read(p,a,b,c) ICOM_CALL3(Read,p,a,b,c)
595 #define IStream16_Write(p,a,b,c) ICOM_CALL3(Write,p,a,b,c)
596 /*** IStream16 methods ***/
597 #define IStream16_Seek(p) ICOM_CALL3(Seek,p)
598 #define IStream16_SetSize(p,a,b) ICOM_CALL1(SetSize,p,a,b)
599 #define IStream16_CopyTo(pa,b,c,d) ICOM_CALL4(CopyTo,pa,b,c,d)
600 #define IStream16_Commit(p,a) ICOM_CALL1(Commit,p,a)
601 #define IStream16_Revert(p) ICOM_CALL (Revert,p)
602 #define IStream16_LockRegion(pa,b,c) ICOM_CALL3(LockRegion,pa,b,c)
603 #define IStream16_UnlockRegion(p,a,b,c) ICOM_CALL3(UnlockRegion,p,a,b,c)
604 #define IStream16_Stat(p,a,b) ICOM_CALL2(Stat,p,a,b)
605 #define IStream16_Clone(p,a) ICOM_CALL1(Clone,p,a)
609 #define ICOM_INTERFACE IStream
610 #define IStream_METHODS \
611 ICOM_METHOD3(HRESULT,Seek, LARGE_INTEGER,dlibMove, DWORD,dwOrigin, ULARGE_INTEGER*,plibNewPosition) \
612 ICOM_METHOD1(HRESULT,SetSize, ULARGE_INTEGER,libNewSize) \
613 ICOM_METHOD4(HRESULT,CopyTo, IStream*,pstm, ULARGE_INTEGER,cb, ULARGE_INTEGER*,pcbRead, ULARGE_INTEGER*,pcbWritten) \
614 ICOM_METHOD1(HRESULT,Commit, DWORD,grfCommitFlags) \
615 ICOM_METHOD (HRESULT,Revert) \
616 ICOM_METHOD3(HRESULT,LockRegion, ULARGE_INTEGER,libOffset, ULARGE_INTEGER,cb, DWORD,dwLockType) \
617 ICOM_METHOD3(HRESULT,UnlockRegion,ULARGE_INTEGER,libOffset, ULARGE_INTEGER,cb, DWORD,dwLockType) \
618 ICOM_METHOD2(HRESULT,Stat, STATSTG*,pstatstg, DWORD,grfStatFlag) \
619 ICOM_METHOD1(HRESULT,Clone, IStream**,ppstm)
620 #define IStream_IMETHODS \
621 ISequentialStream_IMETHODS \
623 ICOM_DEFINE(IStream,ISequentialStream)
624 #undef ICOM_INTERFACE
626 #ifdef ICOM_CINTERFACE
627 /*** IUnknown methods ***/
628 #define IStream_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
629 #define IStream_AddRef(p) ICOM_CALL (AddRef,p)
630 #define IStream_Release(p) ICOM_CALL (Release,p)
631 /*** ISequentialStream methods ***/
632 #define IStream_Read(p,a,b,c) ICOM_CALL3(Read,p,a,b,c)
633 #define IStream_Write(p,a,b,c) ICOM_CALL3(Write,p,a,b,c)
634 /*** IStream32 methods ***/
635 #define IStream_Seek(p,a,b,c) ICOM_CALL3(Seek,p,a,b,c)
636 #define IStream_SetSize(p,a) ICOM_CALL1(SetSize,p,a)
637 #define IStream_CopyTo(pa,b,c,d) ICOM_CALL4(CopyTo,pa,b,c,d)
638 #define IStream_Commit(p,a) ICOM_CALL1(Commit,p,a)
639 #define IStream_Revert(p) ICOM_CALL (Revert,p)
640 #define IStream_LockRegion(pa,b,c) ICOM_CALL3(LockRegion,pa,b,c)
641 #define IStream_UnlockRegion(p,a,b,c) ICOM_CALL3(UnlockRegion,p,a,b,c)
642 #define IStream_Stat(p,a,b) ICOM_CALL2(Stat,p,a,b)
643 #define IStream_Clone(p,a) ICOM_CALL1(Clone,p,a)
646 /* Duplicated for WINELIB */
647 /*** IUnknown methods ***/
648 #define IStream_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
649 #define IStream_AddRef(p) ICOM_CALL (AddRef,p)
650 #define IStream_Release(p) ICOM_CALL (Release,p)
651 /*** ISequentialStream methods ***/
652 #define IStream_Read(p,a,b,c) ICOM_CALL3(Read,p,a,b,c)
653 #define IStream_Write(p,a,b,c) ICOM_CALL3(Write,p,a,b,c)
654 /*** IStream methods ***/
655 #define IStream_Seek(p,a,b,c) ICOM_CALL3(Seek,p,a,b,c)
656 #define IStream_SetSize(p,a) ICOM_CALL1(SetSize,p,a)
657 #define IStream_CopyTo(pa,b,c,d) ICOM_CALL4(CopyTo,pa,b,c,d)
658 #define IStream_Commit(p,a) ICOM_CALL1(Commit,p,a)
659 #define IStream_Revert(p) ICOM_CALL (Revert,p)
660 #define IStream_LockRegion(pa,b,c) ICOM_CALL3(LockRegion,pa,b,c)
661 #define IStream_UnlockRegion(p,a,b,c) ICOM_CALL3(UnlockRegion,p,a,b,c)
662 #define IStream_Stat(p,a,b) ICOM_CALL2(Stat,p,a,b)
663 #define IStream_Clone(p,a) ICOM_CALL1(Clone,p,a)
668 /*****************************************************************************
671 /* FIXME: many functions are missing */
672 HRESULT WINAPI StgCreateDocFile16(LPCOLESTR16 pwcsName,DWORD grfMode,DWORD reserved,IStorage16 **ppstgOpen);
673 HRESULT WINAPI StgCreateDocfile(LPCOLESTR pwcsName,DWORD grfMode,DWORD reserved,IStorage **ppstgOpen);
675 HRESULT WINAPI StgIsStorageFile16(LPCOLESTR16 fn);
676 HRESULT WINAPI StgIsStorageFile(LPCOLESTR fn);
678 HRESULT WINAPI StgOpenStorage16(const OLECHAR16* pwcsName,IStorage16* pstgPriority,DWORD grfMode,SNB16 snbExclude,DWORD reserved,IStorage16**ppstgOpen);
679 HRESULT WINAPI StgOpenStorage(const OLECHAR* pwcsName,IStorage* pstgPriority,DWORD grfMode,SNB snbExclude,DWORD reserved,IStorage**ppstgOpen);
681 HRESULT WINAPI WriteClassStg(IStorage* pStg, REFCLSID rclsid);
683 HRESULT WINAPI StgCreateDocfileOnILockBytes(ILockBytes *plkbyt,DWORD grfMode, DWORD reserved, IStorage** ppstgOpen);
684 HRESULT WINAPI StgOpenStorageOnILockBytes(ILockBytes *plkbyt, IStorage *pstgPriority, DWORD grfMode, SNB snbExclude, DWORD reserved, IStorage **ppstgOpen);
686 /*****************************************************************************
690 /* FIXME: not implemented */
691 BOOL WINAPI CoDosDateTimeToFileTime(WORD nDosDate, WORD nDosTime, FILETIME* lpFileTime);
693 /* FIXME: not implemented */
694 BOOL WINAPI CoFileTimeToDosDateTime(FILETIME* lpFileTime, WORD* lpDosDate, WORD* lpDosTime);
697 #endif /* __WINE_WINE_OBJ_STORAGE_H */