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

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

Updated Wine headers

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