GetCursorPos is actually a BOOL.
[wine] / include / wine / obj_storage.h
1 /*
2  * Defines the COM interfaces and APIs related to structured data storage.
3  *
4  * Depends on 'obj_base.h'.
5  */
6
7 #ifndef __WINE_WINE_OBJ_STORAGE_H
8 #define __WINE_WINE_OBJ_STORAGE_H
9
10
11 #include "winnt.h"
12
13
14 /*****************************************************************************
15  * Predeclare the structures
16  */
17 typedef LPOLESTR16 *SNB16;
18 typedef LPOLESTR32 *SNB32;
19 DECL_WINELIB_TYPE(SNB)
20
21 typedef struct STATSTG STATSTG;
22
23
24 /*****************************************************************************
25  * Predeclare the interfaces
26  */
27 DEFINE_OLEGUID(IID_IEnumSTATSTG,        0x0000000dL, 0, 0);
28 typedef struct IEnumSTATSTG IEnumSTATSTG,*LPENUMSTATSTG;
29
30 DEFINE_GUID   (IID_IFillLockBytes,      0x99caf010L, 0x415e, 0x11cf, 0x88, 0x14, 0x00, 0xaa, 0x00, 0xb5, 0x69, 0xf5);
31 typedef struct IFillLockBytes IFillLockBytes,*LPFILLLOCKBYTES;
32
33 DEFINE_GUID   (IID_ILayoutStorage,      0x0e6d4d90L, 0x6738, 0x11cf, 0x96, 0x08, 0x00, 0xaa, 0x00, 0x68, 0x0d, 0xb4);
34 typedef struct ILayoutStorage ILayoutStorage,*LPLAYOUTSTORAGE;
35
36 DEFINE_OLEGUID(IID_ILockBytes,          0x0000000aL, 0, 0);
37 typedef struct ILockBytes ILockBytes,*LPLOCKBYTES;
38
39 DEFINE_OLEGUID(IID_IPersist,            0x0000010cL, 0, 0);
40 typedef struct IPersist IPersist,*LPPERSIST;
41
42 DEFINE_OLEGUID(IID_IPersistFile,        0x0000010bL, 0, 0);
43 typedef struct IPersistFile IPersistFile,*LPPERSISTFILE;
44
45 DEFINE_OLEGUID(IID_IPersistStorage,     0x0000010aL, 0, 0);
46 typedef struct IPersistStorage IPersistStorage,*LPPERSISTSTORAGE;
47
48 DEFINE_OLEGUID(IID_IPersistStream,      0x00000109L, 0, 0);
49 typedef struct IPersistStream IPersistStream,*LPPERSISTSTREAM;
50
51 DEFINE_GUID   (IID_IProgressNotify,     0xa9d758a0L, 0x4617, 0x11cf, 0x95, 0xfc, 0x00, 0xaa, 0x00, 0x68, 0x0d, 0xb4);
52 typedef struct IProgressNotify IProgressNotify,*LPPROGRESSNOTIFY;
53
54 DEFINE_OLEGUID(IID_IRootStorage,        0x00000012L, 0, 0);
55 typedef struct IRootStorage IRootStorage,*LPROOTSTORAGE;
56
57 DEFINE_GUID   (IID_ISequentialStream,   0x0c733a30L, 0x2a1c, 0x11ce, 0xad, 0xe5, 0x00, 0xaa, 0x00, 0x44, 0x77, 0x3d);
58 typedef struct ISequentialStream ISequentialStream,*LPSEQUENTIALSTREAM;
59
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)
65
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)
71
72
73 /*****************************************************************************
74  * STGM enumeration
75  *
76  * See IStorage and IStream
77  */
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
95
96 /*****************************************************************************
97  * STGTY enumeration
98  *
99  * See IStorage
100  */
101 #define STGTY_STORAGE 1
102 #define STGTY_STREAM  2
103
104 /*****************************************************************************
105  * STATFLAG enumeration
106  *
107  * See IStorage and IStream
108  */
109 #define STATFLAG_DEFAULT 0
110 #define STATFLAG_NONAME  1
111
112 /*****************************************************************************
113  * STREAM_SEEK enumeration
114  *
115  * See IStream
116  */
117 #define STREAM_SEEK_SET 0
118 #define STREAM_SEEK_CUR 1
119 #define STREAM_SEEK_END 2
120
121 /*****************************************************************************
122  * STATSTG structure
123  */
124 struct STATSTG {
125     LPOLESTR16  pwcsName;
126     DWORD       type;
127     ULARGE_INTEGER cbSize;
128     FILETIME    mtime;
129     FILETIME    ctime;
130     FILETIME    atime;
131     DWORD       grfMode;
132     DWORD       grfLocksSupported;
133     CLSID       clsid;
134     DWORD       grfStateBits;
135     DWORD       reserved;
136 };
137
138
139 /*****************************************************************************
140  * IEnumSTATSTG interface
141  */
142 #define ICOM_INTERFACE IEnumSTATSTG
143 ICOM_BEGIN(IEnumSTATSTG,IUnknown)
144      ICOM_METHOD3(HRESULT, Next, ULONG, celt, STATSTG*, rgelt, ULONG*, pceltFetched);   
145      ICOM_METHOD1(HRESULT, Skip, ULONG, celt);
146      ICOM_CMETHOD(HRESULT, Reset);
147      ICOM_METHOD1(HRESULT, Clone, IEnumSTATSTG**, ppenum);
148 ICOM_END(IEnumSTATSTG)
149 #undef ICOM_INTERFACE
150
151 #if !defined(__cplusplus) || defined(CINTERFACE)
152 /*** IUnknown methods ***/
153 #define IEnumSTATSTG_QueryInterface(p,a,b) ICOM_ICALL2(IUnknown,QueryInterface,p,a,b)
154 #define IEnumSTATSTG_AddRef(p)             ICOM_ICALL (IUnknown,AddRef,p)
155 #define IEnumSTATSTG_Release(p)            ICOM_ICALL (IUnknown,Release,p)
156 /*** IEnumSTATSTG methods ***/
157 #define IEnumSTATSTG_Next(p,a,b,c)         ICOM_CALL3(Next,p,a,b,c)
158 #define IEnumSTATSTG_Skip(p,a)             ICOM_CALL1(Skip,p,a)
159 #define IEnumSTATSTG_Reset(p)              ICOM_CALL(Reset,p)
160 #define IEnumSTATSTG_Clone(p,a)            ICOM_CALL1(Clone,p,a)
161 #endif
162
163 /*****************************************************************************
164  * IFillLockBytes interface
165  */
166 /* FIXME: not implemented */
167
168
169 /*****************************************************************************
170  * ILayoutStorage interface
171  */
172 /* FIXME: not implemented */
173
174
175 /*****************************************************************************
176  * ILockBytes interface
177  */
178 /* FIXME: not implemented */
179
180
181 /*****************************************************************************
182  * IPersist interface
183  */
184 #define ICOM_INTERFACE IPersist
185 ICOM_BEGIN(IPersist,IUnknown)
186     ICOM_CMETHOD1(HRESULT,GetClassID, CLSID*,pClassID);
187 ICOM_END(IPersist)
188 #undef ICOM_INTERFACE
189
190 #if !defined(__cplusplus) || defined(CINTERFACE)
191 /*** IUnknown methods ***/
192 #define IPersist_QueryInterface(p,a,b) ICOM_ICALL2(IUnknown,QueryInterface,p,a,b)
193 #define IPersist_AddRef(p)             ICOM_ICALL (IUnknown,AddRef,p)
194 #define IPersist_Release(p)            ICOM_ICALL (IUnknown,Release,p)
195 /*** IPersist methods ***/
196 #define IPersist_GetClassID(p,a) ICOM_CALL1(GetClassID,p,a)
197 #endif
198
199
200 /*****************************************************************************
201  * IPersistFile interface
202  */
203 #define ICOM_INTERFACE IPersistFile
204 ICOM_BEGIN(IPersistFile,IPersist)
205     ICOM_CMETHOD (HRESULT,IsDirty);
206     ICOM_METHOD2 (HRESULT,Load,          LPCOLESTR32,pszFileName, DWORD,dwMode);
207     ICOM_METHOD2 (HRESULT,Save,          LPCOLESTR32,pszFileName, BOOL32,fRemember);
208     ICOM_METHOD1 (HRESULT,SaveCompleted, LPCOLESTR32,pszFileName);
209     ICOM_CMETHOD1(HRESULT,GetCurFile,    LPOLESTR32*,ppszFileName);
210 ICOM_END(IPersistFile)
211 #undef ICOM_INTERFACE
212
213 #if !defined(__cplusplus) || defined(CINTERFACE)
214 /*** IUnknown methods ***/
215 #define IPersistFile_QueryInterface(p,a,b) ICOM_ICALL2(IUnknown,QueryInterface,p,a,b)
216 #define IPersistFile_AddRef(p)             ICOM_ICALL (IUnknown,AddRef,p)
217 #define IPersistFile_Release(p)            ICOM_ICALL (IUnknown,Release,p)
218 /*** IPersist methods ***/
219 #define IPersistFile_GetClassID(p,a) ICOM_ICALL1(IPersist,GetClassID,p,a)
220 /*** IPersistFile methods ***/
221 #define IPersistFile_IsDirty(p)         ICOM_CALL(IsDirty,p)
222 #define IPersistFile_Load(p,a,b)        ICOM_CALL2(Load,p,a,b)
223 #define IPersistFile_Save(p,a,b)        ICOM_CALL2(Save,p,a,b)
224 #define IPersistFile_SaveCompleted(p,a) ICOM_CALL1(SaveCompleted,p,a)
225 #define IPersistFile_GetCurFile(p,a)    ICOM_CALL1(GetCurFile,p,a)
226 #endif
227
228
229 /*****************************************************************************
230  * IPersistStorage interface
231  */
232 /* FIXME: not implemented */
233
234
235 /*****************************************************************************
236  * IPersistStream interface
237  */
238 #define ICOM_INTERFACE IPersistStream
239 ICOM_BEGIN(IPersistStream,IPersist);
240           ICOM_METHOD(HRESULT, IsDirty);
241           ICOM_METHOD1(HRESULT, Load, IStream32*, pStm);
242           ICOM_METHOD2(HRESULT, Save, IStream32*, pStm, BOOL32, fClearDirty);
243           ICOM_METHOD1(HRESULT, GetSizeMax, ULARGE_INTEGER*, pcbSize);
244 ICOM_END(IPersistStream)
245 #undef ICOM_INTERFACE
246
247 #if !defined(__cplusplus) || defined(CINTERFACE)
248 /*** IUnknown methods ***/
249 #define IPersistStream_QueryInterface(p,a,b) ICOM_ICALL2(IUnknown,QueryInterface,p,a,b)
250 #define IPersistStream_AddRef(p)             ICOM_ICALL(IUnknown,AddRef,p)
251 #define IPersistStream_Release(p)            ICOM_ICALL(IUnknown,Release,p)
252 /*** IPersist methods ***/
253 #define IPersistStream_GetClassID(p,a)       ICOM_ICALL1(IPersist,GetClassID,p,a)
254 /*** IPersistStream ***/
255 #define IPersist_Stream_IsDirty(p)       ICOM_CALL(IsDirty,p)
256 #define IPersist_Stream_Load(p,a)        ICOM_CALL1(Load,p,a)
257 #define IPersist_Stream_Save(p,a,b)      ICOM_CALL2(Save,p,a,b)
258 #define IPersist_Stream_GetSizeMax(p,a)  ICOM_CALL(GetSizeMax,p)
259 #endif
260
261
262 /*****************************************************************************
263  * IProgressNotify interface
264  */
265 /* FIXME: not implemented */
266
267
268 /*****************************************************************************
269  * IRootStorage interface
270  */
271 /* FIXME: not implemented */
272
273
274 /*****************************************************************************
275  * ISequentialStream interface
276  */
277 #define ICOM_INTERFACE ISequentialStream
278 ICOM_BEGIN(ISequentialStream,IUnknown)
279     ICOM_METHOD3(HRESULT,Read,        void*,pv, ULONG,cb, ULONG*,pcbRead);
280     ICOM_METHOD3(HRESULT,Write,       const void*,pv, ULONG,cb, ULONG*,pcbWritten);
281 ICOM_END(ISequentialStream)
282 #undef ICOM_INTERFACE
283
284 #if !defined(__cplusplus) || defined(CINTERFACE)
285 /*** IUnknown methods ***/
286 #define ISequentialStream_QueryInterface(p,a,b) ICOM_ICALL2(IUnknown,QueryInterface,p,a,b)
287 #define ISequentialStream_AddRef(p)             ICOM_ICALL (IUnknown,AddRef,p)
288 #define ISequentialStream_Release(p)            ICOM_ICALL (IUnknown,Release,p)
289 /*** ISequentialStream methods ***/
290 #define ISequentialStream_Read(p,a,b,c)  ICOM_CALL3(Read,p,a,b,c)
291 #define ISequentialStream_Write(p,a,b,c) ICOM_CALL3(Write,p,a,b,c)
292 #endif
293
294
295 /*****************************************************************************
296  * IStorage interface
297  */
298 #define ICOM_INTERFACE IStorage16
299 ICOM_BEGIN(IStorage16,IUnknown)
300     ICOM_METHOD5(HRESULT,CreateStream,   LPCOLESTR16,pwcsName, DWORD,grfMode, DWORD,reserved1, DWORD,reserved2, IStream16**,ppstm)
301     ICOM_METHOD5(HRESULT,OpenStream,     LPCOLESTR16,pwcsName, void*,reserved1, DWORD,grfMode, DWORD,reserved2, IStream16**,ppstm)
302     ICOM_METHOD5(HRESULT,CreateStorage,  LPCOLESTR16,pwcsName, DWORD,grfMode, DWORD,dwStgFmt, DWORD,reserved2, IStorage16**,ppstg)
303     ICOM_METHOD6(HRESULT,OpenStorage,    LPCOLESTR16,pwcsName, IStorage16*,pstgPriority, DWORD,grfMode, SNB16,snb16Exclude, DWORD,reserved, IStorage16**,ppstg)
304     ICOM_METHOD4(HRESULT,CopyTo,         DWORD,ciidExclude, const IID*,rgiidExclude, SNB16,snb16Exclude, IStorage16*,pstgDest)
305     ICOM_METHOD4(HRESULT,MoveElementTo,  LPCOLESTR16,pwcsName, IStorage16*,pstgDest, LPCOLESTR16,pwcsNewName, DWORD,grfFlags)
306     ICOM_METHOD1(HRESULT,Commit,         DWORD,grfCommitFlags)
307     ICOM_METHOD (HRESULT,Revert)
308     ICOM_METHOD4(HRESULT,EnumElements,   DWORD,reserved1, void*,reserved2, DWORD,reserved3, IEnumSTATSTG**,ppenum)
309     ICOM_METHOD1(HRESULT,DestroyElement, LPCOLESTR16,pwcsName)
310     ICOM_METHOD2(HRESULT,RenameElement,  LPCOLESTR16,pwcsOldName, LPCOLESTR16,pwcsNewName)
311     ICOM_METHOD4(HRESULT,SetElementTimes,LPCOLESTR16,pwcsName, const FILETIME*,pctime, const FILETIME*,patime, const FILETIME*,pmtime)
312     ICOM_METHOD1(HRESULT,SetClass,       REFCLSID,clsid)
313     ICOM_METHOD2(HRESULT,SetStateBits,   DWORD,grfStateBits, DWORD,grfMask)
314     ICOM_METHOD2(HRESULT,Stat,           STATSTG*,pstatstg, DWORD,grfStatFlag)
315 ICOM_END(IStorage16)
316 #undef ICOM_INTERFACE
317
318 #if !defined(__cplusplus) || defined(CINTERFACE)
319 /*** IUnknown methods ***/
320 #define IStorage16_QueryInterface(p,a,b) ICOM_ICALL2(IUnknown,QueryInterface,p,a,b)
321 #define IStorage16_AddRef(p)             ICOM_ICALL (IUnknown,AddRef,p)
322 #define IStorage16_Release(p)            ICOM_ICALL (IUnknown,Release,p)
323 /*** IStorage16 methods ***/
324 #define IStorage16_CreateStream(p,a,b,c,d,e)  ICOM_CALL5(CreateStream,p,a,b,c,d,e)
325 #define IStorage16_OpenStream(p,a,b,c,d,e)    ICOM_CALL5(OpenStream,p,a,b,c,d,e)
326 #define IStorage16_CreateStorage(p,a,b,c,d,e) ICOM_CALL5(CreateStorage,p,a,b,c,d,e)
327 #define IStorage16_OpenStorage(p,a,b,c,d,e,f) ICOM_CALL6(OpenStorage,p,a,b,c,d,e,f)
328 #define IStorage16_CopyTo(p,a,b,c,d)          ICOM_CALL4(CopyTo,p,a,b,c,d)
329 #define IStorage16_MoveElementTo(p,a,b,c,d)   ICOM_CALL4(MoveElementTo,p,a,b,c,d)
330 #define IStorage16_Commit(p,a)                ICOM_CALL1(Commit,p,a)
331 #define IStorage16_Revert(p)                  ICOM_CALL (Revert,p)
332 #define IStorage16_EnumElements(p,a,b,c,d)    ICOM_CALL4(EnumElements,p,a,b,c,d)
333 #define IStorage16_DestroyElement(p,a)        ICOM_CALL1(DestroyElement,p,a)
334 #define IStorage16_RenameElement(p,a,b)       ICOM_CALL2(RenameElement,p,a,b)
335 #define IStorage16_SetElementTimes(p,a,b,c,d) ICOM_CALL4(SetElementTimes,p,a,b,c,d)
336 #define IStorage16_SetClass(p,a)              ICOM_CALL1(SetClass,p,a)
337 #define IStorage16_SetStateBits(p,a,b)        ICOM_CALL2(SetStateBits,p,a,b)
338 #define IStorage16_Stat(p,a,b)                ICOM_CALL2(Stat,p,a,b)
339 #endif
340
341
342 #define ICOM_INTERFACE IStorage32
343 ICOM_BEGIN(IStorage32,IUnknown)
344     ICOM_METHOD5(HRESULT,CreateStream,   LPCOLESTR32,pwcsName, DWORD,grfMode, DWORD,reserved1, DWORD,reserved2, IStream32**,ppstm);
345     ICOM_METHOD5(HRESULT,OpenStream,     LPCOLESTR32,pwcsName, void*,reserved1, DWORD,grfMode, DWORD,reserved2, IStream32**,ppstm);
346     ICOM_METHOD5(HRESULT,CreateStorage,  LPCOLESTR32,pwcsName, DWORD,grfMode, DWORD,dwStgFmt, DWORD,reserved2, IStorage32**,ppstg);
347     ICOM_METHOD6(HRESULT,OpenStorage,    LPCOLESTR32,pwcsName, IStorage32*,pstgPriority, DWORD,grfMode, SNB32,snb16Exclude, DWORD,reserved, IStorage32**,ppstg);
348     ICOM_METHOD4(HRESULT,CopyTo,         DWORD,ciidExclude, const IID*,rgiidExclude, SNB32,snb16Exclude, IStorage32*,pstgDest);
349     ICOM_METHOD4(HRESULT,MoveElementTo,  LPCOLESTR32,pwcsName, IStorage32*,pstgDest, LPCOLESTR32,pwcsNewName, DWORD,grfFlags);
350     ICOM_METHOD1(HRESULT,Commit,         DWORD,grfCommitFlags);
351     ICOM_METHOD (HRESULT,Revert);
352     ICOM_METHOD4(HRESULT,EnumElements,   DWORD,reserved1, void*,reserved2, DWORD,reserved3, IEnumSTATSTG**,ppenum);
353     ICOM_METHOD1(HRESULT,DestroyElement, LPCOLESTR32,pwcsName);
354     ICOM_METHOD2(HRESULT,RenameElement,  LPCOLESTR32,pwcsOldName, LPCOLESTR32,pwcsNewName);
355     ICOM_METHOD4(HRESULT,SetElementTimes,LPCOLESTR32,pwcsName, const FILETIME*,pctime, const FILETIME*,patime, const FILETIME*,pmtime);
356     ICOM_METHOD1(HRESULT,SetClass,       REFCLSID,clsid);
357     ICOM_METHOD2(HRESULT,SetStateBits,   DWORD,grfStateBits, DWORD,grfMask);
358     ICOM_METHOD2(HRESULT,Stat,           STATSTG*,pstatstg, DWORD,grfStatFlag);
359 ICOM_END(IStorage32)
360 #undef ICOM_INTERFACE
361
362 #if !defined(__cplusplus) || defined(CINTERFACE)
363 /*** IUnknown methods ***/
364 #define IStorage32_QueryInterface(p,a,b) ICOM_ICALL2(IUnknown,QueryInterface,p,a,b)
365 #define IStorage32_AddRef(p)             ICOM_ICALL (IUnknown,AddRef,p)
366 #define IStorage32_Release(p)            ICOM_ICALL (IUnknown,Release,p)
367 /*** IStorage32 methods ***/
368 #define IStorage32_CreateStream(p,a,b,c,d,e)  ICOM_CALL5(CreateStream,p,a,b,c,d,e)
369 #define IStorage32_OpenStream(p,a,b,c,d,e)    ICOM_CALL5(OpenStream,p,a,b,c,d,e)
370 #define IStorage32_CreateStorage(p,a,b,c,d,e) ICOM_CALL5(CreateStorage,p,a,b,c,d,e)
371 #define IStorage32_OpenStorage(p,a,b,c,d,e,f) ICOM_CALL6(OpenStorage,p,a,b,c,d,e,f)
372 #define IStorage32_CopyTo(p,a,b,c,d)          ICOM_CALL4(CopyTo,p,a,b,c,d)
373 #define IStorage32_MoveElementTo(p,a,b,c,d)   ICOM_CALL4(MoveElementTo,p,a,b,c,d)
374 #define IStorage32_Commit(p,a)                ICOM_CALL1(Commit,p,a)
375 #define IStorage32_Revert(p)                  ICOM_CALL (Revert,p)
376 #define IStorage32_EnumElements(p,a,b,c,d)    ICOM_CALL4(EnumElements,p,a,b,c,d)
377 #define IStorage32_DestroyElement(p,a)        ICOM_CALL1(DestroyElement,p,a)
378 #define IStorage32_RenameElement(p,a,b)       ICOM_CALL2(RenameElement,p,a,b)
379 #define IStorage32_SetElementTimes(p,a,b,c,d) ICOM_CALL4(SetElementTimes,p,a,b,c,d)
380 #define IStorage32_SetClass(p,a)              ICOM_CALL1(SetClass,p,a)
381 #define IStorage32_SetStateBits(p,a,b)        ICOM_CALL2(SetStateBits,p,a,b)
382 #define IStorage32_Stat(p,a,b)                ICOM_CALL2(Stat,p,a,b)
383
384 #ifndef __WINE__
385 /* Duplicated for WINELIB */
386 /*** IUnknown methods ***/
387 #define IStorage_QueryInterface(p,a,b) ICOM_ICALL2(IUnknown,QueryInterface,p,a,b)
388 #define IStorage_AddRef(p)             ICOM_ICALL (IUnknown,AddRef,p)
389 #define IStorage_Release(p)            ICOM_ICALL (IUnknown,Release,p)
390 /*** IStorage methods ***/
391 #define IStorage_CreateStream(p,a,b,c,d,e)  ICOM_CALL5(CreateStream,p,a,b,c,d,e)
392 #define IStorage_OpenStream(p,a,b,c,d,e)    ICOM_CALL5(OpenStream,p,a,b,c,d,e)
393 #define IStorage_CreateStorage(p,a,b,c,d,e) ICOM_CALL5(CreateStorage,p,a,b,c,d,e)
394 #define IStorage_OpenStorage(p,a,b,c,d,e,f) ICOM_CALL6(OpenStorage,p,a,b,c,d,e,f)
395 #define IStorage_CopyTo(p,a,b,c,d)          ICOM_CALL4(CopyTo,p,a,b,c,d)
396 #define IStorage_MoveElementTo(p,a,b,c,d)   ICOM_CALL4(MoveElementTo,p,a,b,c,d)
397 #define IStorage_Commit(p,a)                ICOM_CALL1(Commit,p,a)
398 #define IStorage_Revert(p)                  ICOM_CALL (Revert,p)
399 #define IStorage_EnumElements(p,a,b,c,d)    ICOM_CALL4(EnumElements,p,a,b,c,d)
400 #define IStorage_DestroyElement(p,a)        ICOM_CALL1(DestroyElement,p,a)
401 #define IStorage_RenameElement(p,a,b)       ICOM_CALL2(RenameElement,p,a,b)
402 #define IStorage_SetElementTimes(p,a,b,c,d) ICOM_CALL4(SetElementTimes,p,a,b,c,d)
403 #define IStorage_SetClass(p,a)              ICOM_CALL1(SetClass,p,a)
404 #define IStorage_SetStateBits(p,a,b)        ICOM_CALL2(SetStateBits,p,a,b)
405 #define IStorage_Stat(p,a,b)                ICOM_CALL2(Stat,p,a,b)
406 #endif
407 #endif
408
409
410 /*****************************************************************************
411  * IStream interface
412  */
413 #define ICOM_INTERFACE IStream16
414 ICOM_BEGIN(IStream16,ISequentialStream)
415     ICOM_METHOD3(HRESULT,Seek,        LARGE_INTEGER,dlibMove, DWORD,dwOrigin, ULARGE_INTEGER*,plibNewPosition); 
416     ICOM_METHOD1(HRESULT,SetSize,     ULARGE_INTEGER,libNewSize);
417     ICOM_METHOD4(HRESULT,CopyTo,      IStream16*,pstm, ULARGE_INTEGER,cb, ULARGE_INTEGER*,pcbRead, ULARGE_INTEGER*,pcbWritten);
418     ICOM_METHOD1(HRESULT,Commit,      DWORD,grfCommitFlags);
419     ICOM_METHOD (HRESULT,Revert);
420     ICOM_METHOD3(HRESULT,LockRegion,  ULARGE_INTEGER,libOffset, ULARGE_INTEGER,cb, DWORD,dwLockType);
421     ICOM_METHOD3(HRESULT,UnlockRegion,ULARGE_INTEGER,libOffset, ULARGE_INTEGER,cb, DWORD,dwLockType);
422     ICOM_METHOD2(HRESULT,Stat,        STATSTG*,pstatstg, DWORD,grfStatFlag);
423     ICOM_METHOD1(HRESULT,Clone,       IStream16**,ppstm);
424 ICOM_END(IStream16)
425 #undef ICOM_INTERFACE
426
427 #if !defined(__cplusplus) || defined(CINTERFACE)
428 /*** IUnknown methods ***/
429 #define IStream16_QueryInterface(p,a,b) ICOM_ICALL2(IUnknown,QueryInterface,p,a,b)
430 #define IStream16_AddRef(p)             ICOM_ICALL (IUnknown,AddRef,p)
431 #define IStream16_Release(p)            ICOM_ICALL (IUnknown,Release,p)
432 /*** ISequentialStream methods ***/
433 #define IStream16_Read(p,a,b,c)  ICOM_ICALL3(ISequentialStream,Read,p,a,b,c)
434 #define IStream16_Write(p,a,b,c) ICOM_ICALL3(ISequentialStream,Write,p,a,b,c)
435 /*** IStream16 methods ***/
436 #define IStream16_Seek(p)               ICOM_CALL3(Seek,p)
437 #define IStream16_SetSize(p,a,b)        ICOM_CALL1(SetSize,p,a,b)
438 #define IStream16_CopyTo(pa,b,c,d)      ICOM_CALL4(CopyTo,pa,b,c,d)
439 #define IStream16_Commit(p,a)           ICOM_CALL1(Commit,p,a)
440 #define IStream16_Revert(p)             ICOM_CALL (Revert,p)
441 #define IStream16_LockRegion(pa,b,c)    ICOM_CALL3(LockRegion,pa,b,c)
442 #define IStream16_UnlockRegion(p,a,b,c) ICOM_CALL3(UnlockRegion,p,a,b,c)
443 #define IStream16_Stat(p,a,b)           ICOM_CALL2(Stat,p,a,b)
444 #define IStream16_Clone(p,a)            ICOM_CALL1(Clone,p,a)
445 #endif
446
447
448 #define ICOM_INTERFACE IStream32
449 ICOM_BEGIN(IStream32,ISequentialStream)
450     ICOM_METHOD3(HRESULT,Seek,        LARGE_INTEGER,dlibMove, DWORD,dwOrigin, ULARGE_INTEGER*,plibNewPosition); 
451     ICOM_METHOD1(HRESULT,SetSize,     ULARGE_INTEGER,libNewSize);
452     ICOM_METHOD4(HRESULT,CopyTo,      IStream32*,pstm, ULARGE_INTEGER,cb, ULARGE_INTEGER*,pcbRead, ULARGE_INTEGER*,pcbWritten);
453     ICOM_METHOD1(HRESULT,Commit,      DWORD,grfCommitFlags);
454     ICOM_METHOD (HRESULT,Revert);
455     ICOM_METHOD3(HRESULT,LockRegion,  ULARGE_INTEGER,libOffset, ULARGE_INTEGER,cb, DWORD,dwLockType);
456     ICOM_METHOD3(HRESULT,UnlockRegion,ULARGE_INTEGER,libOffset, ULARGE_INTEGER,cb, DWORD,dwLockType);
457     ICOM_METHOD2(HRESULT,Stat,        STATSTG*,pstatstg, DWORD,grfStatFlag);
458     ICOM_METHOD1(HRESULT,Clone,       IStream32**,ppstm);
459 ICOM_END(IStream32)
460 #undef ICOM_INTERFACE
461
462 #if !defined(__cplusplus) || defined(CINTERFACE)
463 /*** IUnknown methods ***/
464 #define IStream32_QueryInterface(p,a,b) ICOM_ICALL2(IUnknown,QueryInterface,p,a,b)
465 #define IStream32_AddRef(p)             ICOM_ICALL (IUnknown,AddRef,p)
466 #define IStream32_Release(p)            ICOM_ICALL (IUnknown,Release,p)
467 /*** ISequentialStream methods ***/
468 #define IStream32_Read(p,a,b,c)  ICOM_ICALL3(ISequentialStream,Read,p,a,b,c)
469 #define IStream32_Write(p,a,b,c) ICOM_ICALL3(ISequentialStream,Write,p,a,b,c)
470 /*** IStream32 methods ***/
471 #define IStream32_Seek(p,a,b,c)         ICOM_CALL3(Seek,p,a,b,c)
472 #define IStream32_SetSize(p,a)          ICOM_CALL1(SetSize,p,a)
473 #define IStream32_CopyTo(pa,b,c,d)      ICOM_CALL4(CopyTo,pa,b,c,d)
474 #define IStream32_Commit(p,a)           ICOM_CALL1(Commit,p,a)
475 #define IStream32_Revert(p)             ICOM_CALL (Revert,p)
476 #define IStream32_LockRegion(pa,b,c)    ICOM_CALL3(LockRegion,pa,b,c)
477 #define IStream32_UnlockRegion(p,a,b,c) ICOM_CALL3(UnlockRegion,p,a,b,c)
478 #define IStream32_Stat(p,a,b)           ICOM_CALL2(Stat,p,a,b)
479 #define IStream32_Clone(p,a)            ICOM_CALL1(Clone,p,a)
480
481 #ifndef __WINE__
482 /* Duplicated for WINELIB */
483 /*** IUnknown methods ***/
484 #define IStream_QueryInterface(p,a,b) ICOM_ICALL2(IUnknown,QueryInterface,p,a,b)
485 #define IStream_AddRef(p)             ICOM_ICALL (IUnknown,AddRef,p)
486 #define IStream_Release(p)            ICOM_ICALL (IUnknown,Release,p)
487 /*** ISequentialStream methods ***/
488 #define IStream_Read(p,a,b,c)  ICOM_ICALL3(ISequentialStream,Read,p,a,b,c)
489 #define IStream_Write(p,a,b,c) ICOM_ICALL3(ISequentialStream,Write,p,a,b,c)
490 /*** IStream methods ***/
491 #define IStream_Seek(p,a,b,c)         ICOM_CALL3(Seek,p,a,b,c)
492 #define IStream_SetSize(p,a)          ICOM_CALL1(SetSize,p,a)
493 #define IStream_CopyTo(pa,b,c,d)      ICOM_CALL4(CopyTo,pa,b,c,d)
494 #define IStream_Commit(p,a)           ICOM_CALL1(Commit,p,a)
495 #define IStream_Revert(p)             ICOM_CALL (Revert,p)
496 #define IStream_LockRegion(pa,b,c)    ICOM_CALL3(LockRegion,pa,b,c)
497 #define IStream_UnlockRegion(p,a,b,c) ICOM_CALL3(UnlockRegion,p,a,b,c)
498 #define IStream_Stat(p,a,b)           ICOM_CALL2(Stat,p,a,b)
499 #define IStream_Clone(p,a)            ICOM_CALL1(Clone,p,a)
500 #endif
501 #endif
502
503
504 /*****************************************************************************
505  * StgXXX API
506  */
507 /* FIXME: many functions are missing */
508 HRESULT WINAPI StgCreateDocFile16(LPCOLESTR16 pwcsName,DWORD grfMode,DWORD reserved,IStorage16 **ppstgOpen);
509 HRESULT WINAPI StgCreateDocfile32(LPCOLESTR32 pwcsName,DWORD grfMode,DWORD reserved,IStorage32 **ppstgOpen);
510 #define StgCreateDocfile WINELIB_NAME(StgCreateDocfile)
511
512 HRESULT WINAPI StgIsStorageFile16(LPCOLESTR16 fn);
513 HRESULT WINAPI StgIsStorageFile32(LPCOLESTR32 fn);
514 #define StgIsStorageFile WINELIB_NAME(StgIsStorageFile)
515
516 HRESULT WINAPI StgOpenStorage16(const OLECHAR16* pwcsName,IStorage16* pstgPriority,DWORD grfMode,SNB16 snbExclude,DWORD reserved,IStorage16**ppstgOpen);
517 HRESULT WINAPI StgOpenStorage32(const OLECHAR32* pwcsName,IStorage32* pstgPriority,DWORD grfMode,SNB32 snbExclude,DWORD reserved,IStorage32**ppstgOpen);
518 #define StgOpenStorage WINELIB_NAME(StgOpenStorage)
519
520 HRESULT WINAPI WriteClassStg32(IStorage32* pStg, REFCLSID rclsid);
521 #define WriteClassStg WINELIB_NAME(WriteClassStg)
522
523 #endif /* __WINE_WINE_OBJ_STORAGE_H */