Moved COM API prototypes to objbase.h, from wine/obj_*.h.
[wine/hacks.git] / include / wine / obj_storage.h
blob482756e880036cd94b8940e004f1a7b836f6f07f
1 /*
2 * Defines the COM interfaces and APIs related to structured data storage.
4 * Copyright (C) the Wine project
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21 #ifndef __WINE_WINE_OBJ_STORAGE_H
22 #define __WINE_WINE_OBJ_STORAGE_H
24 #ifdef __cplusplus
25 extern "C" {
26 #endif /* defined(__cplusplus) */
28 /*****************************************************************************
29 * Predeclare the structures
31 typedef enum tagLOCKTYPE
33 #undef LOCK_WRITE
34 LOCK_WRITE = 1,
35 LOCK_EXCLUSIVE = 2,
36 LOCK_ONLYONCE = 4
37 } LOCKTYPE;
39 typedef struct tagStorageLayout
41 DWORD LayoutType;
42 OLECHAR16* pwcsElementName;
43 LARGE_INTEGER cOffset;
44 LARGE_INTEGER cBytes;
45 } StorageLayout;
47 typedef struct tagSTATSTG {
48 LPOLESTR pwcsName;
49 DWORD type;
50 ULARGE_INTEGER cbSize;
51 FILETIME mtime;
52 FILETIME ctime;
53 FILETIME atime;
54 DWORD grfMode;
55 DWORD grfLocksSupported;
56 CLSID clsid;
57 DWORD grfStateBits;
58 DWORD reserved;
59 } STATSTG;
61 typedef struct tagSTATSTG16 {
62 LPOLESTR16 pwcsName;
63 DWORD type;
64 ULARGE_INTEGER cbSize;
65 FILETIME mtime;
66 FILETIME ctime;
67 FILETIME atime;
68 DWORD grfMode;
69 DWORD grfLocksSupported;
70 CLSID clsid;
71 DWORD grfStateBits;
72 DWORD reserved;
73 } STATSTG16;
75 typedef LPOLESTR16 *SNB16;
76 typedef LPOLESTR *SNB;
79 /*****************************************************************************
80 * Predeclare the interfaces
82 DEFINE_OLEGUID(IID_IEnumSTATSTG, 0x0000000dL, 0, 0);
83 typedef struct IEnumSTATSTG IEnumSTATSTG,*LPENUMSTATSTG;
85 DEFINE_GUID (IID_IFillLockBytes, 0x99caf010L, 0x415e, 0x11cf, 0x88, 0x14, 0x00, 0xaa, 0x00, 0xb5, 0x69, 0xf5);
86 typedef struct IFillLockBytes IFillLockBytes,*LPFILLLOCKBYTES;
88 DEFINE_GUID (IID_ILayoutStorage, 0x0e6d4d90L, 0x6738, 0x11cf, 0x96, 0x08, 0x00, 0xaa, 0x00, 0x68, 0x0d, 0xb4);
89 typedef struct ILayoutStorage ILayoutStorage,*LPLAYOUTSTORAGE;
91 DEFINE_OLEGUID(IID_ILockBytes, 0x0000000aL, 0, 0);
92 typedef struct ILockBytes ILockBytes,*LPLOCKBYTES;
94 DEFINE_OLEGUID(IID_IPersist, 0x0000010cL, 0, 0);
95 typedef struct IPersist IPersist,*LPPERSIST;
97 DEFINE_OLEGUID(IID_IPersistFile, 0x0000010bL, 0, 0);
98 typedef struct IPersistFile IPersistFile,*LPPERSISTFILE;
100 DEFINE_OLEGUID(IID_IPersistStorage, 0x0000010aL, 0, 0);
101 typedef struct IPersistStorage IPersistStorage,*LPPERSISTSTORAGE;
103 DEFINE_OLEGUID(IID_IPersistStream, 0x00000109L, 0, 0);
104 typedef struct IPersistStream IPersistStream,*LPPERSISTSTREAM;
106 DEFINE_GUID (IID_IProgressNotify, 0xa9d758a0L, 0x4617, 0x11cf, 0x95, 0xfc, 0x00, 0xaa, 0x00, 0x68, 0x0d, 0xb4);
107 typedef struct IProgressNotify IProgressNotify,*LPPROGRESSNOTIFY;
109 DEFINE_OLEGUID(IID_IRootStorage, 0x00000012L, 0, 0);
110 typedef struct IRootStorage IRootStorage,*LPROOTSTORAGE;
112 DEFINE_GUID (IID_ISequentialStream, 0x0c733a30L, 0x2a1c, 0x11ce, 0xad, 0xe5, 0x00, 0xaa, 0x00, 0x44, 0x77, 0x3d);
113 typedef struct ISequentialStream ISequentialStream,*LPSEQUENTIALSTREAM;
115 DEFINE_OLEGUID(IID_IStorage, 0x0000000bL, 0, 0);
116 typedef struct IStorage16 IStorage16,*LPSTORAGE16;
117 typedef struct IStorage IStorage,*LPSTORAGE;
119 DEFINE_OLEGUID(IID_IStream, 0x0000000cL, 0, 0);
120 typedef struct IStream16 IStream16,*LPSTREAM16;
121 typedef struct IStream IStream,*LPSTREAM;
124 /*****************************************************************************
125 * STGTY enumeration
127 * See IStorage
129 #define STGTY_STORAGE 1
130 #define STGTY_STREAM 2
131 #define STGTY_LOCKBYTES 3
132 #define STGTY_PROPERTY 4
134 /*****************************************************************************
135 * STATFLAG enumeration
137 * See IStorage and IStream
139 #define STATFLAG_DEFAULT 0
140 #define STATFLAG_NONAME 1
142 /*****************************************************************************
143 * STREAM_SEEK enumeration
145 * See IStream
147 #define STREAM_SEEK_SET 0
148 #define STREAM_SEEK_CUR 1
149 #define STREAM_SEEK_END 2
151 /*****************************************************************************
152 * IEnumSTATSTG interface
154 #define ICOM_INTERFACE IEnumSTATSTG
155 #define IEnumSTATSTG_METHODS \
156 ICOM_METHOD3(HRESULT,Next, ULONG,celt, STATSTG*,rgelt, ULONG*,pceltFethed) \
157 ICOM_METHOD1(HRESULT,Skip, ULONG,celt) \
158 ICOM_METHOD (HRESULT,Reset) \
159 ICOM_METHOD1(HRESULT,Clone, IEnumSTATSTG**,ppenum)
160 #define IEnumSTATSTG_IMETHODS \
161 IUnknown_IMETHODS \
162 IEnumSTATSTG_METHODS
163 ICOM_DEFINE(IEnumSTATSTG,IUnknown)
164 #undef ICOM_INTERFACE
166 /*** IUnknown methods ***/
167 #define IEnumSTATSTG_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
168 #define IEnumSTATSTG_AddRef(p) ICOM_CALL (AddRef,p)
169 #define IEnumSTATSTG_Release(p) ICOM_CALL (Release,p)
170 /*** IEnumSTATSTG methods ***/
171 #define IEnumSTATSTG_Next(p,a,b,c) ICOM_CALL3(Next,p,a,b,c)
172 #define IEnumSTATSTG_Skip(p,a) ICOM_CALL1(Skip,p,a)
173 #define IEnumSTATSTG_Reset(p) ICOM_CALL(Reset,p)
174 #define IEnumSTATSTG_Clone(p,a) ICOM_CALL1(Clone,p,a)
177 /*****************************************************************************
178 * IFillLockBytes interface
180 #define ICOM_INTERFACE IFillLockBytes
181 #define IFillLockBytes_METHODS \
182 ICOM_METHOD3(HRESULT,FillAppend, const void*,pv, ULONG,cb, ULONG*,pcbWritten) \
183 ICOM_METHOD4(HRESULT,FillAt, ULARGE_INTEGER,ulOffset, const void*,pv, ULONG,cb, ULONG*,pcbWritten) \
184 ICOM_METHOD1(HRESULT,SetFillSize, ULARGE_INTEGER,ulSize) \
185 ICOM_METHOD1(HRESULT,Terminate, BOOL,bCanceled)
186 #define IFillLockBytes_IMETHODS \
187 IUnknown_IMETHODS \
188 IFillLockBytes_METHODS
189 ICOM_DEFINE(IFillLockBytes,IUnknown)
190 #undef ICOM_INTERFACE
192 /*** IUnknown methods ***/
193 #define IFillLockBytes_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
194 #define IFillLockBytes_AddRef(p) ICOM_CALL (AddRef,p)
195 #define IFillLockBytes_Release(p) ICOM_CALL (Release,p)
196 /*** IFillLockBytes methods ***/
197 #define IFillLockBytes_FillAppend(p,a,b,c) ICOM_CALL3(FillAppend,p,a,b,c)
198 #define IFillLockBytes_FillAt(p,a,b,c,d) ICOM_CALL4(FillAt,p,a,b,c,d)
199 #define IFillLockBytes_SetFillSize(p,a) ICOM_CALL1(SetFillSize,p,a)
200 #define IFillLockBytes_Terminate(p,a) ICOM_CALL1(Terminate,p,a)
203 /*****************************************************************************
204 * ILayoutStorage interface
206 #define ICOM_INTERFACE ILayoutStorage
207 #define ILayoutStorage_METHODS \
208 ICOM_METHOD2(HRESULT,LayoutScript, DWORD,nEntries, DWORD,glfInterleavedFlag) \
209 ICOM_METHOD (HRESULT,BeginMonitor) \
210 ICOM_METHOD (HRESULT,EndMonitor) \
211 ICOM_METHOD1(HRESULT,ReLayoutDocfile, OLECHAR16*,pwcsNewDfName) \
212 ICOM_METHOD1(HRESULT,ReLayoutDocfileOnILockBytes, ILockBytes*,pILockBytes)
213 #define ILayoutStorage_IMETHODS \
214 IUnknown_IMETHODS \
215 ILayoutStorage_METHODS
216 ICOM_DEFINE(ILayoutStorage,IUnknown)
217 #undef ICOM_INTERFACE
219 /*** IUnknown methods ***/
220 #define ILayoutStorage_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
221 #define ILayoutStorage_AddRef(p) ICOM_CALL (AddRef,p)
222 #define ILayoutStorage_Release(p) ICOM_CALL (Release,p)
223 /*** ILayoutStorage methods ***/
224 #define ILayoutStorage_LayoutScript(p,a,b) ICOM_CALL2(LayoutScript,p,a,b)
225 #define ILayoutStorage_BeginMonitor(p) ICOM_CALL (BeginMonitor,p)
226 #define ILayoutStorage_EndMonitor(p) ICOM_CALL (EndMonitor,p)
227 #define ILayoutStorage_ReLayoutDocfile(p,a) ICOM_CALL1(ReLayoutDocfile,p,a)
228 #define ILayoutStorage_ReLayoutDocfileOnILockBytes(p,a) ICOM_CALL1(ReLayoutDocfileOnILockBytes,p,a)
231 /*****************************************************************************
232 * ILockBytes interface
234 #define ICOM_INTERFACE ILockBytes
235 #define ILockBytes_METHODS \
236 ICOM_METHOD4(HRESULT,ReadAt, ULARGE_INTEGER,ulOffset, void*,pv, ULONG,cb, ULONG*,pcbRead) \
237 ICOM_METHOD4(HRESULT,WriteAt, ULARGE_INTEGER,ulOffset, const void*,pv, ULONG,cb, ULONG*,pcbWritten) \
238 ICOM_METHOD (HRESULT,Flush) \
239 ICOM_METHOD1(HRESULT,SetSize, ULARGE_INTEGER,cb) \
240 ICOM_METHOD3(HRESULT,LockRegion, ULARGE_INTEGER,libOffset, ULARGE_INTEGER,cb, DWORD,dwLockType) \
241 ICOM_METHOD3(HRESULT,UnlockRegion, ULARGE_INTEGER,libOffset, ULARGE_INTEGER,cb, DWORD,dwLockType) \
242 ICOM_METHOD2(HRESULT,Stat, STATSTG*,pstatstg, DWORD,grfStatFlag)
243 #define ILockBytes_IMETHODS \
244 IUnknown_IMETHODS \
245 ILockBytes_METHODS
246 ICOM_DEFINE(ILockBytes,IUnknown)
247 #undef ICOM_INTERFACE
249 /*** IUnknown methods ***/
250 #define ILockBytes_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
251 #define ILockBytes_AddRef(p) ICOM_CALL (AddRef,p)
252 #define ILockBytes_Release(p) ICOM_CALL (Release,p)
253 /*** ILockBytes methods ***/
254 #define ILockBytes_ReadAt(p,a,b,c,d) ICOM_CALL4(ReadAt,p,a,b,c,d)
255 #define ILockBytes_WriteAt(p,a,b,c,d) ICOM_CALL4(WriteAt,p,a,b,c,d)
256 #define ILockBytes_Flush(p) ICOM_CALL (Flush,p)
257 #define ILockBytes_SetSize(p,a) ICOM_CALL1(SetSize,p,a)
258 #define ILockBytes_LockRegion(p,a,b,c) ICOM_CALL3(LockRegion,p,a,b,c)
259 #define ILockBytes_UnlockRegion(p,a,b,c) ICOM_CALL3(UnlockRegion,p,a,b,c)
260 #define ILockBytes_Stat(p,a,b) ICOM_CALL2(Stat,p,a,b)
263 /*****************************************************************************
264 * IPersist interface
266 #define ICOM_INTERFACE IPersist
267 #define IPersist_METHODS \
268 ICOM_METHOD1(HRESULT,GetClassID, CLSID*,pClassID)
269 #define IPersist_IMETHODS \
270 IUnknown_IMETHODS \
271 IPersist_METHODS
272 ICOM_DEFINE(IPersist,IUnknown)
273 #undef ICOM_INTERFACE
275 /*** IUnknown methods ***/
276 #define IPersist_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
277 #define IPersist_AddRef(p) ICOM_CALL (AddRef,p)
278 #define IPersist_Release(p) ICOM_CALL (Release,p)
279 /*** IPersist methods ***/
280 #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_METHOD (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_METHOD1(HRESULT,GetCurFile, LPOLESTR*,ppszFileName)
293 #define IPersistFile_IMETHODS \
294 IPersist_IMETHODS \
295 IPersistFile_METHODS
296 ICOM_DEFINE(IPersistFile,IPersist)
297 #undef ICOM_INTERFACE
299 /*** IUnknown methods ***/
300 #define IPersistFile_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
301 #define IPersistFile_AddRef(p) ICOM_CALL (AddRef,p)
302 #define IPersistFile_Release(p) ICOM_CALL (Release,p)
303 /*** IPersist methods ***/
304 #define IPersistFile_GetClassID(p,a) ICOM_CALL1(GetClassID,p,a)
305 /*** IPersistFile methods ***/
306 #define IPersistFile_IsDirty(p) ICOM_CALL(IsDirty,p)
307 #define IPersistFile_Load(p,a,b) ICOM_CALL2(Load,p,a,b)
308 #define IPersistFile_Save(p,a,b) ICOM_CALL2(Save,p,a,b)
309 #define IPersistFile_SaveCompleted(p,a) ICOM_CALL1(SaveCompleted,p,a)
310 #define IPersistFile_GetCurFile(p,a) ICOM_CALL1(GetCurFile,p,a)
313 /*****************************************************************************
314 * IPersistStorage interface
316 #define ICOM_INTERFACE IPersistStorage
317 #define IPersistStorage_METHODS \
318 ICOM_METHOD (HRESULT,IsDirty) \
319 ICOM_METHOD1(HRESULT,InitNew, IStorage*,pStg) \
320 ICOM_METHOD1(HRESULT,Load, IStorage*,pStg) \
321 ICOM_METHOD2(HRESULT,Save, IStorage*,pStg, BOOL,fSameAsLoad) \
322 ICOM_METHOD1(HRESULT,SaveCompleted, IStorage*,pStgNew) \
323 ICOM_METHOD (HRESULT,HandsOffStorage)
324 #define IPersistStorage_IMETHODS \
325 IPersist_IMETHODS \
326 IPersistStorage_METHODS
327 ICOM_DEFINE(IPersistStorage,IPersist)
328 #undef ICOM_INTERFACE
330 /*** IUnknown methods ***/
331 #define IPersistStorage_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
332 #define IPersistStorage_AddRef(p) ICOM_CALL (AddRef,p)
333 #define IPersistStorage_Release(p) ICOM_CALL (Release,p)
334 /*** IPersist methods ***/
335 #define IPersistStorage_GetClassID(p,a) ICOM_CALL1(GetClassID,p,a)
336 /*** IPersistStorage methods ***/
337 #define IPersistStorage_IsDirty(p) ICOM_CALL (IsDirty,p)
338 #define IPersistStorage_InitNew(p,a) ICOM_CALL1(InitNew,p,a)
339 #define IPersistStorage_Load(p,a) ICOM_CALL1(Load,p,a)
340 #define IPersistStorage_Save(p,a,b) ICOM_CALL2(Save,p,a,b)
341 #define IPersistStorage_SaveCompleted(p,a) ICOM_CALL1(SaveCompleted,p,a)
342 #define IPersistStorage_HandsOffStorage(p) ICOM_CALL (HandsOffStorage,p)
345 /*****************************************************************************
346 * IPersistStream interface
348 #define ICOM_INTERFACE IPersistStream
349 #define IPersistStream_METHODS \
350 ICOM_METHOD (HRESULT,IsDirty) \
351 ICOM_METHOD1(HRESULT,Load, IStream*,pStm) \
352 ICOM_METHOD2(HRESULT,Save, IStream*,pStm, BOOL,fClearDirty) \
353 ICOM_METHOD1(HRESULT,GetSizeMax, ULARGE_INTEGER*,pcbSize)
354 #define IPersistStream_IMETHODS \
355 IPersist_IMETHODS \
356 IPersistStream_METHODS
357 ICOM_DEFINE(IPersistStream,IPersist)
358 #undef ICOM_INTERFACE
360 /*** IUnknown methods ***/
361 #define IPersistStream_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
362 #define IPersistStream_AddRef(p) ICOM_CALL (AddRef,p)
363 #define IPersistStream_Release(p) ICOM_CALL (Release,p)
364 /*** IPersist methods ***/
365 #define IPersistStream_GetClassID(p,a) ICOM_CALL1(GetClassID,p,a)
366 /*** IPersistStream methods ***/
367 #define IPersistStream_IsDirty(p) ICOM_CALL (IsDirty,p)
368 #define IPersistStream_Load(p,a) ICOM_CALL1(Load,p,a)
369 #define IPersistStream_Save(p,a,b) ICOM_CALL2(Save,p,a,b)
370 #define IPersistStream_GetSizeMax(p,a) ICOM_CALL1(GetSizeMax,p,a)
373 /*****************************************************************************
374 * IProgressNotify interface
376 #define ICOM_INTERFACE IProgressNotify
377 #define IProgressNotify_METHODS \
378 ICOM_METHOD4(HRESULT,OnProgress, DWORD,dwProgressCurrent, DWORD,dwProgressMaximum, BOOL,fAccurate, BOOL,fOwner)
379 #define IProgressNotify_IMETHODS \
380 IUnknown_IMETHODS \
381 IProgressNotify_METHODS
382 ICOM_DEFINE(IProgressNotify,IUnknown)
383 #undef ICOM_INTERFACE
385 /*** IUnknown methods ***/
386 #define IProgressNotify_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
387 #define IProgressNotify_AddRef(p) ICOM_CALL (AddRef,p)
388 #define IProgressNotify_Release(p) ICOM_CALL (Release,p)
389 /*** IProgressNotify methods ***/
390 #define IProgressNotify_OnProgress(p,a,b,c,d) ICOM_CALL4(OnProgress,p,a,b,c,d)
393 /*****************************************************************************
394 * IRootStorage interface
396 #define ICOM_INTERFACE IRootStorage
397 #define IRootStorage_METHODS \
398 ICOM_METHOD1(HRESULT,SwitchToFile, LPOLESTR,pszFile)
399 #define IRootStorage_IMETHODS \
400 IUnknown_IMETHODS \
401 IRootStorage_METHODS
402 ICOM_DEFINE(IRootStorage,IUnknown)
403 #undef ICOM_INTERFACE
405 /*** IUnknown methods ***/
406 #define IRootStorage_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
407 #define IRootStorage_AddRef(p) ICOM_CALL (AddRef,p)
408 #define IRootStorage_Release(p) ICOM_CALL (Release,p)
409 /*** IRootStorage methods ***/
410 #define IRootStorage_SwitchToFile(p,a) ICOM_CALLSwitchToFile(,p,a)
413 /*****************************************************************************
414 * ISequentialStream interface
416 #define ICOM_INTERFACE ISequentialStream
417 #define ISequentialStream_METHODS \
418 ICOM_METHOD3(HRESULT,Read, void*,pv, ULONG,cb, ULONG*,pcbRead) \
419 ICOM_METHOD3(HRESULT,Write, const void*,pv, ULONG,cb, ULONG*,pcbWritten)
420 #define ISequentialStream_IMETHODS \
421 IUnknown_IMETHODS \
422 ISequentialStream_METHODS
423 ICOM_DEFINE(ISequentialStream,IUnknown)
424 #undef ICOM_INTERFACE
426 /*** IUnknown methods ***/
427 #define ISequentialStream_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
428 #define ISequentialStream_AddRef(p) ICOM_CALL (AddRef,p)
429 #define ISequentialStream_Release(p) ICOM_CALL (Release,p)
430 /*** ISequentialStream methods ***/
431 #define ISequentialStream_Read(p,a,b,c) ICOM_CALL3(Read,p,a,b,c)
432 #define ISequentialStream_Write(p,a,b,c) ICOM_CALL3(Write,p,a,b,c)
435 /*****************************************************************************
436 * IStorage interface
438 #define ICOM_INTERFACE IStorage16
439 #define IStorage16_METHODS \
440 ICOM_METHOD5(HRESULT,CreateStream, LPCOLESTR16,pwcsName, DWORD,grfMode, DWORD,reserved1, DWORD,reserved2, IStream16**,ppstm) \
441 ICOM_METHOD5(HRESULT,OpenStream, LPCOLESTR16,pwcsName, void*,reserved1, DWORD,grfMode, DWORD,reserved2, IStream16**,ppstm) \
442 ICOM_METHOD5(HRESULT,CreateStorage, LPCOLESTR16,pwcsName, DWORD,grfMode, DWORD,dwStgFmt, DWORD,reserved2, IStorage16**,ppstg) \
443 ICOM_METHOD6(HRESULT,OpenStorage, LPCOLESTR16,pwcsName, IStorage16*,pstgPriority, DWORD,grfMode, SNB16,snb16Exclude, DWORD,reserved, IStorage16**,ppstg) \
444 ICOM_METHOD4(HRESULT,CopyTo, DWORD,ciidExclude, const IID*,rgiidExclude, SNB16,snb16Exclude, IStorage16*,pstgDest) \
445 ICOM_METHOD4(HRESULT,MoveElementTo, LPCOLESTR16,pwcsName, IStorage16*,pstgDest, LPCOLESTR16,pwcsNewName, DWORD,grfFlags) \
446 ICOM_METHOD1(HRESULT,Commit, DWORD,grfCommitFlags) \
447 ICOM_METHOD (HRESULT,Revert) \
448 ICOM_METHOD4(HRESULT,EnumElements, DWORD,reserved1, void*,reserved2, DWORD,reserved3, IEnumSTATSTG**,ppenum) \
449 ICOM_METHOD1(HRESULT,DestroyElement, LPCOLESTR16,pwcsName) \
450 ICOM_METHOD2(HRESULT,RenameElement, LPCOLESTR16,pwcsOldName, LPOLESTR16,pwcsNewName) \
451 ICOM_METHOD4(HRESULT,SetElementTimes,LPCOLESTR16,pwcsName, const FILETIME*,pctime, const FILETIME*,patime, const FILETIME*,pmtime) \
452 ICOM_METHOD1(HRESULT,SetClass, REFCLSID,clsid) \
453 ICOM_METHOD2(HRESULT,SetStateBits, DWORD,grfStateBits, DWORD,grfMask) \
454 ICOM_METHOD2(HRESULT,Stat, STATSTG*,pstatstg, DWORD,grfStatFlag)
455 #define IStorage16_IMETHODS \
456 IUnknown_IMETHODS \
457 IStorage16_METHODS
458 ICOM_DEFINE(IStorage16,IUnknown)
459 #undef ICOM_INTERFACE
461 /*** IUnknown methods ***/
462 #define IStorage16_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
463 #define IStorage16_AddRef(p) ICOM_CALL (AddRef,p)
464 #define IStorage16_Release(p) ICOM_CALL (Release,p)
465 /*** IStorage16 methods ***/
466 #define IStorage16_CreateStream(p,a,b,c,d,e) ICOM_CALL5(CreateStream,p,a,b,c,d,e)
467 #define IStorage16_OpenStream(p,a,b,c,d,e) ICOM_CALL5(OpenStream,p,a,b,c,d,e)
468 #define IStorage16_CreateStorage(p,a,b,c,d,e) ICOM_CALL5(CreateStorage,p,a,b,c,d,e)
469 #define IStorage16_OpenStorage(p,a,b,c,d,e,f) ICOM_CALL6(OpenStorage,p,a,b,c,d,e,f)
470 #define IStorage16_CopyTo(p,a,b,c,d) ICOM_CALL4(CopyTo,p,a,b,c,d)
471 #define IStorage16_MoveElementTo(p,a,b,c,d) ICOM_CALL4(MoveElementTo,p,a,b,c,d)
472 #define IStorage16_Commit(p,a) ICOM_CALL1(Commit,p,a)
473 #define IStorage16_Revert(p) ICOM_CALL (Revert,p)
474 #define IStorage16_EnumElements(p,a,b,c,d) ICOM_CALL4(EnumElements,p,a,b,c,d)
475 #define IStorage16_DestroyElement(p,a) ICOM_CALL1(DestroyElement,p,a)
476 #define IStorage16_RenameElement(p,a,b) ICOM_CALL2(RenameElement,p,a,b)
477 #define IStorage16_SetElementTimes(p,a,b,c,d) ICOM_CALL4(SetElementTimes,p,a,b,c,d)
478 #define IStorage16_SetClass(p,a) ICOM_CALL1(SetClass,p,a)
479 #define IStorage16_SetStateBits(p,a,b) ICOM_CALL2(SetStateBits,p,a,b)
480 #define IStorage16_Stat(p,a,b) ICOM_CALL2(Stat,p,a,b)
483 #define ICOM_INTERFACE IStorage
484 #define IStorage_METHODS \
485 ICOM_METHOD5(HRESULT,CreateStream, LPCOLESTR,pwcsName, DWORD,grfMode, DWORD,reserved1, DWORD,reserved2, IStream**,ppstm) \
486 ICOM_METHOD5(HRESULT,OpenStream, LPCOLESTR,pwcsName, void*,reserved1, DWORD,grfMode, DWORD,reserved2, IStream**,ppstm) \
487 ICOM_METHOD5(HRESULT,CreateStorage, LPCOLESTR,pwcsName, DWORD,grfMode, DWORD,dwStgFmt, DWORD,reserved2, IStorage**,ppstg) \
488 ICOM_METHOD6(HRESULT,OpenStorage, LPCOLESTR,pwcsName, IStorage*,pstgPriority, DWORD,grfMode, SNB,snb16Exclude, DWORD,reserved, IStorage**,ppstg) \
489 ICOM_METHOD4(HRESULT,CopyTo, DWORD,ciidExclude, const IID*,rgiidExclude, SNB,snb16Exclude, IStorage*,pstgDest) \
490 ICOM_METHOD4(HRESULT,MoveElementTo, LPCOLESTR,pwcsName, IStorage*,pstgDest, LPCOLESTR,pwcsNewName, DWORD,grfFlags) \
491 ICOM_METHOD1(HRESULT,Commit, DWORD,grfCommitFlags) \
492 ICOM_METHOD (HRESULT,Revert) \
493 ICOM_METHOD4(HRESULT,EnumElements, DWORD,reserved1, void*,reserved2, DWORD,reserved3, IEnumSTATSTG**,ppenum) \
494 ICOM_METHOD1(HRESULT,DestroyElement, LPCOLESTR,pwcsName) \
495 ICOM_METHOD2(HRESULT,RenameElement, LPCOLESTR,pwcsOldName, LPCOLESTR,pwcsNewName) \
496 ICOM_METHOD4(HRESULT,SetElementTimes,LPCOLESTR,pwcsName, const FILETIME*,pctime, const FILETIME*,patime, const FILETIME*,pmtime) \
497 ICOM_METHOD1(HRESULT,SetClass, REFCLSID,clsid) \
498 ICOM_METHOD2(HRESULT,SetStateBits, DWORD,grfStateBits, DWORD,grfMask) \
499 ICOM_METHOD2(HRESULT,Stat, STATSTG*,pstatstg, DWORD,grfStatFlag)
500 #define IStorage_IMETHODS \
501 IUnknown_IMETHODS \
502 IStorage_METHODS
503 ICOM_DEFINE(IStorage,IUnknown)
504 #undef ICOM_INTERFACE
506 /*** IUnknown methods ***/
507 #define IStorage_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
508 #define IStorage_AddRef(p) ICOM_CALL (AddRef,p)
509 #define IStorage_Release(p) ICOM_CALL (Release,p)
510 /*** IStorage methods ***/
511 #define IStorage_CreateStream(p,a,b,c,d,e) ICOM_CALL5(CreateStream,p,a,b,c,d,e)
512 #define IStorage_OpenStream(p,a,b,c,d,e) ICOM_CALL5(OpenStream,p,a,b,c,d,e)
513 #define IStorage_CreateStorage(p,a,b,c,d,e) ICOM_CALL5(CreateStorage,p,a,b,c,d,e)
514 #define IStorage_OpenStorage(p,a,b,c,d,e,f) ICOM_CALL6(OpenStorage,p,a,b,c,d,e,f)
515 #define IStorage_CopyTo(p,a,b,c,d) ICOM_CALL4(CopyTo,p,a,b,c,d)
516 #define IStorage_MoveElementTo(p,a,b,c,d) ICOM_CALL4(MoveElementTo,p,a,b,c,d)
517 #define IStorage_Commit(p,a) ICOM_CALL1(Commit,p,a)
518 #define IStorage_Revert(p) ICOM_CALL (Revert,p)
519 #define IStorage_EnumElements(p,a,b,c,d) ICOM_CALL4(EnumElements,p,a,b,c,d)
520 #define IStorage_DestroyElement(p,a) ICOM_CALL1(DestroyElement,p,a)
521 #define IStorage_RenameElement(p,a,b) ICOM_CALL2(RenameElement,p,a,b)
522 #define IStorage_SetElementTimes(p,a,b,c,d) ICOM_CALL4(SetElementTimes,p,a,b,c,d)
523 #define IStorage_SetClass(p,a) ICOM_CALL1(SetClass,p,a)
524 #define IStorage_SetStateBits(p,a,b) ICOM_CALL2(SetStateBits,p,a,b)
525 #define IStorage_Stat(p,a,b) ICOM_CALL2(Stat,p,a,b)
528 /*****************************************************************************
529 * IStream interface
531 #define ICOM_INTERFACE IStream16
532 #define IStream16_METHODS \
533 ICOM_METHOD3(HRESULT,Seek, LARGE_INTEGER,dlibMove, DWORD,dwOrigin, ULARGE_INTEGER*,plibNewPosition) \
534 ICOM_METHOD1(HRESULT,SetSize, ULARGE_INTEGER,libNewSize) \
535 ICOM_METHOD4(HRESULT,CopyTo, IStream16*,pstm, ULARGE_INTEGER,cb, ULARGE_INTEGER*,pcbRead, ULARGE_INTEGER*,pcbWritten) \
536 ICOM_METHOD1(HRESULT,Commit, DWORD,grfCommitFlags) \
537 ICOM_METHOD (HRESULT,Revert) \
538 ICOM_METHOD3(HRESULT,LockRegion, ULARGE_INTEGER,libOffset, ULARGE_INTEGER,cb, DWORD,dwLockType) \
539 ICOM_METHOD3(HRESULT,UnlockRegion,ULARGE_INTEGER,libOffset, ULARGE_INTEGER,cb, DWORD,dwLockType) \
540 ICOM_METHOD2(HRESULT,Stat, STATSTG*,pstatstg, DWORD,grfStatFlag) \
541 ICOM_METHOD1(HRESULT,Clone, IStream16**,ppstm)
542 #define IStream16_IMETHODS \
543 ISequentialStream_IMETHODS \
544 IStream16_METHODS
545 ICOM_DEFINE(IStream16,ISequentialStream)
546 #undef ICOM_INTERFACE
548 /*** IUnknown methods ***/
549 #define IStream16_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
550 #define IStream16_AddRef(p) ICOM_CALL (AddRef,p)
551 #define IStream16_Release(p) ICOM_CALL (Release,p)
552 /*** ISequentialStream methods ***/
553 #define IStream16_Read(p,a,b,c) ICOM_CALL3(Read,p,a,b,c)
554 #define IStream16_Write(p,a,b,c) ICOM_CALL3(Write,p,a,b,c)
555 /*** IStream16 methods ***/
556 #define IStream16_Seek(p) ICOM_CALL3(Seek,p)
557 #define IStream16_SetSize(p,a,b) ICOM_CALL1(SetSize,p,a,b)
558 #define IStream16_CopyTo(pa,b,c,d) ICOM_CALL4(CopyTo,pa,b,c,d)
559 #define IStream16_Commit(p,a) ICOM_CALL1(Commit,p,a)
560 #define IStream16_Revert(p) ICOM_CALL (Revert,p)
561 #define IStream16_LockRegion(pa,b,c) ICOM_CALL3(LockRegion,pa,b,c)
562 #define IStream16_UnlockRegion(p,a,b,c) ICOM_CALL3(UnlockRegion,p,a,b,c)
563 #define IStream16_Stat(p,a,b) ICOM_CALL2(Stat,p,a,b)
564 #define IStream16_Clone(p,a) ICOM_CALL1(Clone,p,a)
567 #define ICOM_INTERFACE IStream
568 #define IStream_METHODS \
569 ICOM_METHOD3(HRESULT,Seek, LARGE_INTEGER,dlibMove, DWORD,dwOrigin, ULARGE_INTEGER*,plibNewPosition) \
570 ICOM_METHOD1(HRESULT,SetSize, ULARGE_INTEGER,libNewSize) \
571 ICOM_METHOD4(HRESULT,CopyTo, IStream*,pstm, ULARGE_INTEGER,cb, ULARGE_INTEGER*,pcbRead, ULARGE_INTEGER*,pcbWritten) \
572 ICOM_METHOD1(HRESULT,Commit, DWORD,grfCommitFlags) \
573 ICOM_METHOD (HRESULT,Revert) \
574 ICOM_METHOD3(HRESULT,LockRegion, ULARGE_INTEGER,libOffset, ULARGE_INTEGER,cb, DWORD,dwLockType) \
575 ICOM_METHOD3(HRESULT,UnlockRegion,ULARGE_INTEGER,libOffset, ULARGE_INTEGER,cb, DWORD,dwLockType) \
576 ICOM_METHOD2(HRESULT,Stat, STATSTG*,pstatstg, DWORD,grfStatFlag) \
577 ICOM_METHOD1(HRESULT,Clone, IStream**,ppstm)
578 #define IStream_IMETHODS \
579 ISequentialStream_IMETHODS \
580 IStream_METHODS
581 ICOM_DEFINE(IStream,ISequentialStream)
582 #undef ICOM_INTERFACE
584 /*** IUnknown methods ***/
585 #define IStream_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
586 #define IStream_AddRef(p) ICOM_CALL (AddRef,p)
587 #define IStream_Release(p) ICOM_CALL (Release,p)
588 /*** ISequentialStream methods ***/
589 #define IStream_Read(p,a,b,c) ICOM_CALL3(Read,p,a,b,c)
590 #define IStream_Write(p,a,b,c) ICOM_CALL3(Write,p,a,b,c)
591 /*** IStream methods ***/
592 #define IStream_Seek(p,a,b,c) ICOM_CALL3(Seek,p,a,b,c)
593 #define IStream_SetSize(p,a) ICOM_CALL1(SetSize,p,a)
594 #define IStream_CopyTo(p,a,b,c,d) ICOM_CALL4(CopyTo,p,a,b,c,d)
595 #define IStream_Commit(p,a) ICOM_CALL1(Commit,p,a)
596 #define IStream_Revert(p) ICOM_CALL (Revert,p)
597 #define IStream_LockRegion(p,a,b,c) ICOM_CALL3(LockRegion,p,a,b,c)
598 #define IStream_UnlockRegion(p,a,b,c) ICOM_CALL3(UnlockRegion,p,a,b,c)
599 #define IStream_Stat(p,a,b) ICOM_CALL2(Stat,p,a,b)
600 #define IStream_Clone(p,a) ICOM_CALL1(Clone,p,a)
603 #ifdef __cplusplus
604 } /* extern "C" */
605 #endif /* defined(__cplusplus) */
607 #endif /* __WINE_WINE_OBJ_STORAGE_H */