You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
522 lines
16 KiB
522 lines
16 KiB
/*
|
|
+---------------------------------------------------------------
|
|
*
|
|
* Microsoft Windows
|
|
* Copyright (C) Microsoft Corporation, 1992 - 1996.
|
|
*
|
|
* File: storage.h
|
|
*
|
|
* Contents: This is the main file to include to use the reference
|
|
* implementation.
|
|
*
|
|
* Note: Some of the defintions have been changed to TCHAR
|
|
* instead of WCHAR, to add support for ANSI APIs.
|
|
* TCHAR becomes WCHAR with _UNICODE defined, and char
|
|
* otherwise. (See tchar.h for details).
|
|
*
|
|
*---------------------------------------------------------------
|
|
*/
|
|
|
|
|
|
#ifndef _STORAGE_H_
|
|
#define _STORAGE_H_
|
|
|
|
#include "ref.hxx"
|
|
#include "tchar.h"
|
|
|
|
|
|
/****** Storage Error Codes *************************************************/
|
|
|
|
/* DOS-based error codes */
|
|
#define STG_E_INVALIDFUNCTION \
|
|
MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0x01)
|
|
|
|
#define STG_E_FILENOTFOUND \
|
|
MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0x02)
|
|
|
|
#define STG_E_PATHNOTFOUND \
|
|
MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0x03)
|
|
|
|
#define STG_E_TOOMANYOPENFILES \
|
|
MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0x04)
|
|
|
|
#define STG_E_ACCESSDENIED \
|
|
MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0x05)
|
|
|
|
#define STG_E_INVALIDHANDLE \
|
|
MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0x06)
|
|
|
|
#define STG_E_INSUFFICIENTMEMORY \
|
|
MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0x08)
|
|
|
|
#define STG_E_INVALIDPOINTER \
|
|
MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0x09)
|
|
|
|
#define STG_E_NOMOREFILES \
|
|
MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0x12)
|
|
|
|
#define STG_E_DISKISWRITEPROTECTED \
|
|
MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0x13)
|
|
|
|
#define STG_E_SEEKERROR \
|
|
MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0x19)
|
|
|
|
#define STG_E_SHAREVIOLATION \
|
|
MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0x20)
|
|
|
|
#define STG_E_WRITEFAULT \
|
|
MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0x1d)
|
|
|
|
#define STG_E_READFAULT \
|
|
MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0x1e)
|
|
|
|
#define STG_E_LOCKVIOLATION \
|
|
MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0x21)
|
|
|
|
#define STG_E_FILEALREADYEXISTS \
|
|
MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0x50)
|
|
|
|
#define STG_E_INVALIDPARAMETER \
|
|
MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0x57)
|
|
|
|
#define STG_E_MEDIUMFULL \
|
|
MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0x70)
|
|
|
|
#define STG_E_ABNORMALAPIEXIT \
|
|
MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0xfa)
|
|
|
|
#define STG_E_INVALIDHEADER \
|
|
MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0xfb)
|
|
|
|
#define STG_E_INVALIDNAME \
|
|
MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0xfc)
|
|
|
|
#define STG_E_UNKNOWN \
|
|
MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0xfd)
|
|
|
|
#define STG_E_UNIMPLEMENTEDFUNCTION\
|
|
MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0xfe)
|
|
|
|
#define STG_E_INVALIDFLAG \
|
|
MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0xff)
|
|
|
|
/* Standard storage error codes */
|
|
#define STG_E_INUSE \
|
|
MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0x100)
|
|
|
|
#define STG_E_NOTCURRENT \
|
|
MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0x101)
|
|
|
|
#define STG_E_REVERTED \
|
|
MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0x102)
|
|
|
|
#define STG_E_CANTSAVE \
|
|
MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0x103)
|
|
|
|
#define STG_E_OLDFORMAT \
|
|
MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0x104)
|
|
|
|
#define STG_E_OLDDLL \
|
|
MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0x105)
|
|
|
|
#define STG_E_SHAREREQUIRED \
|
|
MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0x106)
|
|
|
|
#define STG_E_NOTFILEBASEDSTORAGE \
|
|
MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0x107)
|
|
|
|
#define STG_E_DOCFILECORRUPT \
|
|
MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0x109)
|
|
|
|
#define STG_E_BADBASEADDRESS \
|
|
MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0x110)
|
|
|
|
#define STG_E_DOCFILETOOLARGE \
|
|
MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0x111)
|
|
|
|
/* Information returns */
|
|
#define STG_S_CONVERTED \
|
|
MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_STORAGE, 0x200)
|
|
|
|
#define STG_S_BUFFEROVERFLOW \
|
|
MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_STORAGE, 0x201)
|
|
|
|
#define STG_S_TRYOVERWRITE \
|
|
MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_STORAGE, 0x202)
|
|
|
|
|
|
/****** Storage types *******************************************************/
|
|
|
|
#ifndef HUGEP
|
|
#define HUGEP
|
|
#endif
|
|
|
|
#define CWCSTORAGENAME 32
|
|
|
|
/* Storage instantiation modes */
|
|
#define STGM_DIRECT 0x00000000L
|
|
|
|
/* not used in ref, but defined here for error checking etc. */
|
|
#define STGM_TRANSACTED 0x00010000L
|
|
#define STGM_SIMPLE 0x08000000L
|
|
#define STGM_NOSCRATCH 0x00100000L
|
|
|
|
#define STGM_READ 0x00000000L
|
|
#define STGM_WRITE 0x00000001L
|
|
#define STGM_READWRITE 0x00000002L
|
|
|
|
#define STGM_SHARE_DENY_NONE 0x00000040L
|
|
#define STGM_SHARE_DENY_READ 0x00000030L
|
|
#define STGM_SHARE_DENY_WRITE 0x00000020L
|
|
#define STGM_SHARE_EXCLUSIVE 0x00000010L
|
|
|
|
#define STGM_PRIORITY 0x00040000L
|
|
#define STGM_DELETEONRELEASE 0x04000000L
|
|
|
|
#define STGM_CREATE 0x00001000L
|
|
#define STGM_CONVERT 0x00020000L
|
|
#define STGM_FAILIFTHERE 0x00000000L
|
|
|
|
/* Storage commit types */
|
|
typedef enum tagSTGC
|
|
{
|
|
STGC_DEFAULT = 0,
|
|
STGC_OVERWRITE = 1,
|
|
STGC_ONLYIFCURRENT = 2,
|
|
STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE = 4
|
|
} STGC;
|
|
|
|
/* Stream name block definitions */
|
|
typedef TCHAR FAR* FAR* SNB;
|
|
|
|
#ifndef _FILETIME_
|
|
#define _FILETIME_
|
|
typedef struct FARSTRUCT tagFILETIME
|
|
{
|
|
DWORD dwLowDateTime;
|
|
DWORD dwHighDateTime;
|
|
} FILETIME;
|
|
#endif
|
|
|
|
/* Storage stat buffer */
|
|
|
|
typedef struct FARSTRUCT tagSTATSTG
|
|
{
|
|
TCHAR FAR* pwcsName;
|
|
DWORD type;
|
|
ULARGE_INTEGER cbSize;
|
|
FILETIME mtime;
|
|
FILETIME ctime;
|
|
FILETIME atime;
|
|
DWORD grfMode;
|
|
DWORD grfLocksSupported;
|
|
CLSID clsid;
|
|
DWORD grfStateBits;
|
|
DWORD reserved;
|
|
} STATSTG;
|
|
|
|
|
|
/* Storage element types */
|
|
typedef enum tagSTGTY
|
|
{
|
|
STGTY_STORAGE = 1,
|
|
STGTY_STREAM = 2,
|
|
STGTY_LOCKBYTES = 3,
|
|
STGTY_PROPERTY = 4
|
|
} STGTY;
|
|
|
|
typedef enum tagSTREAM_SEEK
|
|
{
|
|
STREAM_SEEK_SET = 0,
|
|
STREAM_SEEK_CUR = 1,
|
|
STREAM_SEEK_END = 2
|
|
} STREAM_SEEK;
|
|
|
|
typedef enum tagLOCKTYPE
|
|
{
|
|
LOCK_WRITE = 1,
|
|
LOCK_EXCLUSIVE = 2,
|
|
LOCK_ONLYONCE = 4
|
|
} LOCKTYPE;
|
|
|
|
typedef enum tagSTGMOVE
|
|
{
|
|
STGMOVE_MOVE = 0,
|
|
STGMOVE_COPY = 1
|
|
} STGMOVE;
|
|
|
|
typedef enum tagSTATFLAG
|
|
{
|
|
STATFLAG_DEFAULT = 0,
|
|
STATFLAG_NONAME = 1
|
|
} STATFLAG;
|
|
|
|
#define STGFMT_STORAGE 0
|
|
#define STGFMT_FILE 3
|
|
#define STGFMT_ANY 4
|
|
#define STGFMT_DOCFILE 5
|
|
|
|
// STG initialization options for StgCreateStorageEx
|
|
#define STGOPTIONS_VERSION 2
|
|
|
|
typedef struct tagSTGOPTIONS
|
|
{
|
|
USHORT usVersion; // Versions 1 and 2 supported
|
|
USHORT reserved; // must be 0 for padding
|
|
ULONG ulSectorSize; // docfile header sector size (512)
|
|
const TCHAR *pwcsTemplateFile; // version 2 or above
|
|
} STGOPTIONS;
|
|
|
|
/****** Storage Enumerators *************************************************/
|
|
|
|
#define LPENUMSTATSTG IEnumSTATSTG FAR*
|
|
|
|
#undef INTERFACE
|
|
#define INTERFACE IEnumSTATSTG
|
|
|
|
DECLARE_INTERFACE_(IEnumSTATSTG, IUnknown)
|
|
{
|
|
/* *** IUnknown methods *** */
|
|
STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
|
|
STDMETHOD_(ULONG,AddRef) (THIS) PURE;
|
|
STDMETHOD_(ULONG,Release) (THIS) PURE;
|
|
|
|
/* *** IENUMSTATSTG methods *** */
|
|
STDMETHOD(Next) (THIS_ ULONG celt, STATSTG FAR * rgelt, ULONG FAR *pceltFetched) PURE;
|
|
STDMETHOD(Skip) (THIS_ ULONG celt) PURE;
|
|
STDMETHOD(Reset) (THIS) PURE;
|
|
STDMETHOD(Clone) (THIS_ IEnumSTATSTG FAR *FAR *ppenm) PURE;
|
|
};
|
|
|
|
|
|
/****** ILockBytes Interface ************************************************/
|
|
|
|
#define LPLOCKBYTES ILockBytes FAR*
|
|
|
|
#undef INTERFACE
|
|
#define INTERFACE ILockBytes
|
|
|
|
DECLARE_INTERFACE_(ILockBytes, IUnknown)
|
|
{
|
|
/* *** IUnknown methods *** */
|
|
STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
|
|
STDMETHOD_(ULONG,AddRef) (THIS) PURE;
|
|
STDMETHOD_(ULONG,Release) (THIS) PURE;
|
|
|
|
/* *** ILockBytes methods *** */
|
|
STDMETHOD(ReadAt) (THIS_ ULARGE_INTEGER ulOffset,
|
|
VOID HUGEP *pv,
|
|
ULONG cb,
|
|
ULONG FAR *pcbRead) PURE;
|
|
STDMETHOD(WriteAt) (THIS_ ULARGE_INTEGER ulOffset,
|
|
VOID const HUGEP *pv,
|
|
ULONG cb,
|
|
ULONG FAR *pcbWritten) PURE;
|
|
STDMETHOD(Flush) (THIS) PURE;
|
|
STDMETHOD(SetSize) (THIS_ ULARGE_INTEGER cb) PURE;
|
|
STDMETHOD(LockRegion) (THIS_ ULARGE_INTEGER libOffset,
|
|
ULARGE_INTEGER cb,
|
|
DWORD dwLockType) PURE;
|
|
STDMETHOD(UnlockRegion) (THIS_ ULARGE_INTEGER libOffset,
|
|
ULARGE_INTEGER cb,
|
|
DWORD dwLockType) PURE;
|
|
STDMETHOD(Stat) (THIS_ STATSTG FAR *pstatstg, DWORD grfStatFlag) PURE;
|
|
};
|
|
|
|
|
|
/****** IStream Interface ***************************************************/
|
|
|
|
|
|
#define LPSTREAM IStream FAR*
|
|
|
|
#undef INTERFACE
|
|
#define INTERFACE IStream
|
|
|
|
DECLARE_INTERFACE_(IStream, IUnknown)
|
|
{
|
|
/* *** IUnknown methods *** */
|
|
STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
|
|
STDMETHOD_(ULONG,AddRef) (THIS) PURE;
|
|
STDMETHOD_(ULONG,Release) (THIS) PURE;
|
|
|
|
/* *** IStream methods *** */
|
|
STDMETHOD(Read) (THIS_ VOID HUGEP *pv,
|
|
ULONG cb, ULONG FAR *pcbRead) PURE;
|
|
STDMETHOD(Write) (THIS_ VOID const HUGEP *pv,
|
|
ULONG cb,
|
|
ULONG FAR *pcbWritten) PURE;
|
|
STDMETHOD(Seek) (THIS_ LARGE_INTEGER dlibMove,
|
|
DWORD dwOrigin,
|
|
ULARGE_INTEGER FAR *plibNewPosition) PURE;
|
|
STDMETHOD(SetSize) (THIS_ ULARGE_INTEGER libNewSize) PURE;
|
|
STDMETHOD(CopyTo) (THIS_ IStream FAR *pstm,
|
|
ULARGE_INTEGER cb,
|
|
ULARGE_INTEGER FAR *pcbRead,
|
|
ULARGE_INTEGER FAR *pcbWritten) PURE;
|
|
STDMETHOD(Commit) (THIS_ DWORD grfCommitFlags) PURE;
|
|
STDMETHOD(Revert) (THIS) PURE;
|
|
STDMETHOD(LockRegion) (THIS_ ULARGE_INTEGER libOffset,
|
|
ULARGE_INTEGER cb,
|
|
DWORD dwLockType) PURE;
|
|
STDMETHOD(UnlockRegion) (THIS_ ULARGE_INTEGER libOffset,
|
|
ULARGE_INTEGER cb,
|
|
DWORD dwLockType) PURE;
|
|
STDMETHOD(Stat) (THIS_ STATSTG FAR *pstatstg, DWORD grfStatFlag) PURE;
|
|
STDMETHOD(Clone)(THIS_ IStream FAR * FAR *ppstm) PURE;
|
|
};
|
|
|
|
|
|
/****** IStorage Interface **************************************************/
|
|
|
|
#define LPSTORAGE IStorage FAR*
|
|
|
|
#undef INTERFACE
|
|
#define INTERFACE IStorage
|
|
|
|
DECLARE_INTERFACE_(IStorage, IUnknown)
|
|
{
|
|
/* *** IUnknown methods *** */
|
|
STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
|
|
STDMETHOD_(ULONG,AddRef) (THIS) PURE;
|
|
STDMETHOD_(ULONG,Release) (THIS) PURE;
|
|
|
|
/* *** IStorage methods *** */
|
|
STDMETHOD(CreateStream) (THIS_ const TCHAR FAR* pwcsName,
|
|
DWORD grfMode,
|
|
DWORD reserved1,
|
|
DWORD reserved2,
|
|
IStream FAR *FAR *ppstm) PURE;
|
|
STDMETHOD(OpenStream) (THIS_ const TCHAR FAR* pwcsName,
|
|
void FAR *reserved1,
|
|
DWORD grfMode,
|
|
DWORD reserved2,
|
|
IStream FAR *FAR *ppstm) PURE;
|
|
STDMETHOD(CreateStorage) (THIS_ const TCHAR FAR* pwcsName,
|
|
DWORD grfMode,
|
|
DWORD reserved1,
|
|
DWORD reserved2,
|
|
IStorage FAR *FAR *ppstg) PURE;
|
|
STDMETHOD(OpenStorage) (THIS_ const TCHAR FAR* pwcsName,
|
|
IStorage FAR *pstgPriority,
|
|
DWORD grfMode,
|
|
SNB snbExclude,
|
|
DWORD reserved,
|
|
IStorage FAR *FAR *ppstg) PURE;
|
|
STDMETHOD(CopyTo) (THIS_ DWORD ciidExclude,
|
|
IID const FAR *rgiidExclude,
|
|
SNB snbExclude,
|
|
IStorage FAR *pstgDest) PURE;
|
|
STDMETHOD(MoveElementTo) (THIS_ TCHAR const FAR* lpszName,
|
|
IStorage FAR *pstgDest,
|
|
TCHAR const FAR* lpszNewName,
|
|
DWORD grfFlags) PURE;
|
|
STDMETHOD(Commit) (THIS_ DWORD grfCommitFlags) PURE;
|
|
STDMETHOD(Revert) (THIS) PURE;
|
|
STDMETHOD(EnumElements) (THIS_ DWORD reserved1,
|
|
void FAR *reserved2,
|
|
DWORD reserved3,
|
|
IEnumSTATSTG FAR *FAR *ppenm) PURE;
|
|
STDMETHOD(DestroyElement) (THIS_ const TCHAR FAR* pwcsName) PURE;
|
|
STDMETHOD(RenameElement) (THIS_ const TCHAR FAR* pwcsOldName,
|
|
const TCHAR FAR* pwcsNewName) PURE;
|
|
STDMETHOD(SetElementTimes) (THIS_ const TCHAR FAR *lpszName,
|
|
FILETIME const FAR *pctime,
|
|
FILETIME const FAR *patime,
|
|
FILETIME const FAR *pmtime) PURE;
|
|
STDMETHOD(SetClass) (THIS_ REFCLSID clsid) PURE;
|
|
STDMETHOD(SetStateBits) (THIS_ DWORD grfStateBits, DWORD grfMask) PURE;
|
|
STDMETHOD(Stat) (THIS_ STATSTG FAR *pstatstg, DWORD grfStatFlag) PURE;
|
|
};
|
|
|
|
|
|
/****** IRootStorage Interface **********************************************/
|
|
|
|
#define LPROOTSTORAGE IRootStorage FAR*
|
|
|
|
#undef INTERFACE
|
|
#define INTERFACE IRootStorage
|
|
|
|
DECLARE_INTERFACE_(IRootStorage, IUnknown)
|
|
{
|
|
/* *** IUnknown methods *** */
|
|
STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
|
|
STDMETHOD_(ULONG,AddRef) (THIS) PURE;
|
|
STDMETHOD_(ULONG,Release) (THIS) PURE;
|
|
|
|
/* *** IRootStorage methods *** */
|
|
STDMETHOD(SwitchToFile) (THIS_ LPTSTR lpstrFile) PURE;
|
|
};
|
|
|
|
/****** Storage API Prototypes ********************************************/
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
STDAPI StgCreateDocfile(const TCHAR FAR* pwcsName,
|
|
DWORD grfMode,
|
|
DWORD reserved,
|
|
IStorage FAR * FAR *ppstgOpen);
|
|
STDAPI StgCreateDocfileOnILockBytes(ILockBytes FAR *plkbyt,
|
|
DWORD grfMode,
|
|
DWORD reserved,
|
|
IStorage FAR * FAR *ppstgOpen);
|
|
STDAPI StgOpenStorage(const TCHAR FAR* pwcsName,
|
|
IStorage FAR *pstgPriority,
|
|
DWORD grfMode,
|
|
SNB snbExclude,
|
|
DWORD reserved,
|
|
IStorage FAR * FAR *ppstgOpen);
|
|
STDAPI StgOpenStorageOnILockBytes(ILockBytes FAR *plkbyt,
|
|
IStorage FAR *pstgPriority,
|
|
DWORD grfMode,
|
|
SNB snbExclude,
|
|
DWORD reserved,
|
|
IStorage FAR * FAR *ppstgOpen);
|
|
STDAPI StgIsStorageFile(const TCHAR FAR* pwcsName);
|
|
STDAPI StgIsStorageILockBytes(ILockBytes FAR* plkbyt);
|
|
|
|
STDAPI StgCreateStorageEx (const TCHAR* pwcsName,
|
|
DWORD grfMode,
|
|
DWORD stgfmt, // enum
|
|
DWORD grfAttrs, // reserved
|
|
STGOPTIONS * pStgOptions,
|
|
void * reserved,
|
|
REFIID riid,
|
|
void ** ppObjectOpen);
|
|
|
|
/****** Malloc API's ********************************************/
|
|
interface IMalloc;
|
|
#define LPMALLOC IMalloc FAR*
|
|
|
|
STDAPI CoGetMalloc( DWORD dwMemContext, LPMALLOC * ppMalloc );
|
|
STDAPI_(LPVOID) CoTaskMemAlloc( ULONG cb );
|
|
STDAPI_(void) CoTaskMemFree( void* pv );
|
|
STDAPI_(LPVOID) CoTaskMemRealloc( LPVOID pv, ULONG cb );
|
|
|
|
#ifdef __cplusplus
|
|
};
|
|
#endif
|
|
|
|
/****** IMalloc Interface **********************************************/
|
|
#undef INTERFACE
|
|
#define INTERFACE IMalloc
|
|
|
|
DECLARE_INTERFACE_(IMalloc, IUnknown)
|
|
{
|
|
/*** IUnknown methods ***/
|
|
STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
|
|
STDMETHOD_(ULONG,AddRef) (THIS) PURE;
|
|
STDMETHOD_(ULONG,Release) (THIS) PURE;
|
|
|
|
/*** IMallic methods ***/
|
|
STDMETHOD_(void*,Alloc) ( ULONG cb) PURE;
|
|
STDMETHOD_(void *,Realloc) ( void *pv, ULONG cb) PURE;
|
|
STDMETHOD_(void,Free) ( void *pv) PURE;
|
|
STDMETHOD_(ULONG,GetSize) ( void *pv) PURE;
|
|
STDMETHOD_(int,DidAlloc) ( void *pv) PURE;
|
|
STDMETHOD_(void,HeapMinimize)( void ) PURE;
|
|
};
|
|
|
|
#define MEMCTX_TASK 1 /* the only supported flag for CoGetMalloc */
|
|
|
|
#endif /* ifndef _STORAGE_H_ */
|