Annotation of mstools/ole20/h/storage.h, revision 1.1

1.1     ! root        1: // storage.h -
        !             2: 
        !             3: #if !defined( _STORAGE_H_ )
        !             4: #define _STORAGE_H_
        !             5: 
        !             6: 
        !             7: #include <compobj.h>
        !             8: 
        !             9: 
        !            10: /****** Storage Error Codes *************************************************/
        !            11: 
        !            12: /* DOS-based error codes */
        !            13: #define STG_E_INVALIDFUNCTION \
        !            14:     MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0x01)
        !            15: 
        !            16: #define STG_E_FILENOTFOUND \
        !            17:     MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0x02)
        !            18: 
        !            19: #define STG_E_PATHNOTFOUND \
        !            20:     MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0x03)
        !            21: 
        !            22: #define STG_E_TOOMANYOPENFILES \
        !            23:     MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0x04)
        !            24: 
        !            25: #define STG_E_ACCESSDENIED \
        !            26:     MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0x05)
        !            27: 
        !            28: #define STG_E_INVALIDHANDLE \
        !            29:     MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0x06)
        !            30: 
        !            31: #define STG_E_INSUFFICIENTMEMORY \
        !            32:     MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0x08)
        !            33: 
        !            34: #define STG_E_INVALIDPOINTER \
        !            35:     MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0x09)
        !            36: 
        !            37: #define STG_E_NOMOREFILES \
        !            38:     MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0x12)
        !            39: 
        !            40: #define STG_E_DISKISWRITEPROTECTED \
        !            41:     MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0x13)
        !            42: 
        !            43: #define STG_E_SEEKERROR \
        !            44:     MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0x19)
        !            45: 
        !            46: #define STG_E_WRITEFAULT \
        !            47:     MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0x1d)
        !            48: 
        !            49: #define STG_E_READFAULT \
        !            50:     MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0x1e)
        !            51: 
        !            52: #define STG_E_SHAREVIOLATION \
        !            53:     MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0x20)
        !            54: 
        !            55: #define STG_E_LOCKVIOLATION \
        !            56:     MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0x21)
        !            57: 
        !            58: #define STG_E_FILEALREADYEXISTS \
        !            59:     MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0x50)
        !            60: 
        !            61: #define STG_E_INVALIDPARAMETER \
        !            62:     MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0x57)
        !            63: 
        !            64: #define STG_E_MEDIUMFULL \
        !            65:     MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0x70)
        !            66: 
        !            67: #define STG_E_ABNORMALAPIEXIT \
        !            68:     MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0xfa)
        !            69: 
        !            70: #define STG_E_INVALIDHEADER \
        !            71:     MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0xfb)
        !            72: 
        !            73: #define STG_E_INVALIDNAME \
        !            74:     MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0xfc)
        !            75: 
        !            76: #define STG_E_UNKNOWN \
        !            77:     MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0xfd)
        !            78: 
        !            79: #define STG_E_UNIMPLEMENTEDFUNCTION\
        !            80:     MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0xfe)
        !            81: 
        !            82: #define STG_E_INVALIDFLAG \
        !            83:     MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0xff)
        !            84: 
        !            85: /* Standard storage error codes */
        !            86: #define STG_E_INUSE \
        !            87:     MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0x100)
        !            88: 
        !            89: #define STG_E_NOTCURRENT \
        !            90:     MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0x101)
        !            91: 
        !            92: #define STG_E_REVERTED \
        !            93:     MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0x102)
        !            94: 
        !            95: #define STG_E_CANTSAVE \
        !            96:     MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0x103)
        !            97: 
        !            98: #define STG_E_OLDFORMAT \
        !            99:     MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0x104)
        !           100:        
        !           101: #define STG_E_OLDDLL \
        !           102:     MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0x105)
        !           103: 
        !           104: #define STG_E_SHAREREQUIRED \
        !           105:     MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0x106)
        !           106: 
        !           107: #define STG_E_NOTFILEBASEDSTORAGE \
        !           108:     MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0x107)
        !           109: 
        !           110: #define STG_E_EXTANTMARSHALLINGS \
        !           111:     MAKE_SCODE(SEVERITY_ERROR, FACILITY_STORAGE, 0x108)
        !           112: 
        !           113: /* Information returns */
        !           114: #define STG_S_CONVERTED \
        !           115:     MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_STORAGE, 0x200)
        !           116: 
        !           117: /****** Storage types *******************************************************/
        !           118: 
        !           119: #ifdef UNICODE
        !           120: typedef WCHAR TCHAR;
        !           121: #else
        !           122: typedef char TCHAR;
        !           123: #endif
        !           124: 
        !           125: #if defined(_M_I286)
        !           126: #ifndef HUGEP
        !           127: #define HUGEP _huge
        !           128: #endif
        !           129: #else
        !           130: #ifndef HUGEP
        !           131: #define HUGEP
        !           132: #endif
        !           133: #endif
        !           134: 
        !           135: #define CWCSTORAGENAME 32
        !           136: 
        !           137: /* Storage instantiation modes */
        !           138: #define STGM_DIRECT            0x00000000L
        !           139: #define STGM_TRANSACTED                0x00010000L
        !           140: 
        !           141: #define STGM_READ              0x00000000L
        !           142: #define STGM_WRITE             0x00000001L
        !           143: #define STGM_READWRITE         0x00000002L
        !           144: 
        !           145: #define STGM_SHARE_DENY_NONE   0x00000040L
        !           146: #define STGM_SHARE_DENY_READ   0x00000030L
        !           147: #define STGM_SHARE_DENY_WRITE  0x00000020L
        !           148: #define STGM_SHARE_EXCLUSIVE   0x00000010L
        !           149: 
        !           150: #define STGM_PRIORITY          0x00040000L
        !           151: #define STGM_DELETEONRELEASE   0x04000000L
        !           152: 
        !           153: #define STGM_CREATE            0x00001000L
        !           154: #define STGM_CONVERT           0x00020000L
        !           155: #define STGM_FAILIFTHERE       0x00000000L
        !           156: 
        !           157: /* Storage commit types */
        !           158: typedef enum tagSTGC
        !           159: {
        !           160:     STGC_DEFAULT = 0,
        !           161:     STGC_OVERWRITE     = 1,
        !           162:     STGC_ONLYIFCURRENT = 2,
        !           163:     STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE = 4
        !           164: } STGC;
        !           165: 
        !           166: /* Stream name block definitions */
        !           167: typedef TCHAR FAR * FAR *SNB;
        !           168: 
        !           169: 
        !           170: #ifndef _WINDOWS_
        !           171: #ifndef _FILETIME_
        !           172: #define _FILETIME_
        !           173: typedef struct FARSTRUCT tagFILETIME
        !           174: {
        !           175:     DWORD dwLowDateTime;
        !           176:     DWORD dwHighDateTime;
        !           177: } FILETIME;
        !           178: #endif
        !           179: #endif
        !           180: 
        !           181: 
        !           182: /* Storage stat buffer */
        !           183: 
        !           184: typedef struct FARSTRUCT tagSTATSTG
        !           185: {
        !           186:     TCHAR FAR* pwcsName;
        !           187:     DWORD type;
        !           188:     ULARGE_INTEGER cbSize;
        !           189:     FILETIME mtime;
        !           190:     FILETIME ctime;
        !           191:     FILETIME atime;
        !           192:     DWORD grfMode;
        !           193:     DWORD grfLocksSupported;
        !           194:     CLSID clsid;
        !           195:     DWORD grfStateBits;
        !           196:     DWORD reserved;
        !           197: } STATSTG;
        !           198: 
        !           199: 
        !           200: /* Storage element types */
        !           201: typedef enum tagSTGTY
        !           202: {
        !           203:     STGTY_STORAGE   = 1,
        !           204:     STGTY_STREAM    = 2,
        !           205:     STGTY_LOCKBYTES = 3,
        !           206:     STGTY_PROPERTY  = 4
        !           207: } STGTY;
        !           208: 
        !           209: typedef enum tagSTREAM_SEEK
        !           210: {
        !           211:     STREAM_SEEK_SET = 0,
        !           212:     STREAM_SEEK_CUR = 1,
        !           213:     STREAM_SEEK_END = 2
        !           214: } STREAM_SEEK;
        !           215: 
        !           216: typedef enum tagLOCKTYPE
        !           217: {
        !           218:     LOCK_WRITE      = 1,
        !           219:     LOCK_EXCLUSIVE  = 2,
        !           220:     LOCK_ONLYONCE   = 4
        !           221: } LOCKTYPE;
        !           222: 
        !           223: typedef enum tagSTGMOVE
        !           224: {
        !           225:     STGMOVE_MOVE    = 0,
        !           226:     STGMOVE_COPY    = 1
        !           227: } STGMOVE;
        !           228: 
        !           229: typedef enum tagSTATFLAG
        !           230: {
        !           231:     STATFLAG_DEFAULT = 0,
        !           232:     STATFLAG_NONAME = 1
        !           233: } STATFLAG;
        !           234: 
        !           235: 
        !           236: /****** Storage Enumerators *************************************************/
        !           237: 
        !           238: #define LPENUMSTATSTG        IEnumSTATSTG FAR*
        !           239: 
        !           240: #undef  INTERFACE
        !           241: #define INTERFACE   IEnumSTATSTG
        !           242: 
        !           243: DECLARE_INTERFACE_(IEnumSTATSTG, IUnknown)
        !           244: {
        !           245:     // *** IUnknown methods ***
        !           246:     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
        !           247:     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
        !           248:     STDMETHOD_(ULONG,Release) (THIS) PURE;
        !           249: 
        !           250:     // *** IENUMSTATSTG methods ***
        !           251:     STDMETHOD(Next) (THIS_ ULONG celt, STATSTG FAR * rgelt, ULONG FAR *pceltFetched) PURE;
        !           252:     STDMETHOD(Skip) (THIS_ ULONG celt) PURE;
        !           253:     STDMETHOD(Reset) (THIS) PURE;
        !           254:     STDMETHOD(Clone) (THIS_ IEnumSTATSTG FAR *FAR *ppenm) PURE;
        !           255: };
        !           256: 
        !           257: 
        !           258: /****** ILockBytes Interface ************************************************/
        !           259: 
        !           260: #define LPLOCKBYTES     ILockBytes FAR*
        !           261: 
        !           262: #undef  INTERFACE
        !           263: #define INTERFACE   ILockBytes
        !           264: 
        !           265: DECLARE_INTERFACE_(ILockBytes, IUnknown)
        !           266: {
        !           267:     // *** IUnknown methods ***
        !           268:     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
        !           269:     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
        !           270:     STDMETHOD_(ULONG,Release) (THIS) PURE;
        !           271: 
        !           272:     // *** ILockBytes methods ***
        !           273:     STDMETHOD(ReadAt) (THIS_ ULARGE_INTEGER ulOffset,
        !           274:              VOID HUGEP *pv,
        !           275:              ULONG cb,
        !           276:              ULONG FAR *pcbRead) PURE;
        !           277:     STDMETHOD(WriteAt) (THIS_ ULARGE_INTEGER ulOffset,
        !           278:               VOID const HUGEP *pv,
        !           279:               ULONG cb,
        !           280:               ULONG FAR *pcbWritten) PURE;
        !           281:     STDMETHOD(Flush) (THIS) PURE;
        !           282:     STDMETHOD(SetSize) (THIS_ ULARGE_INTEGER cb) PURE;
        !           283:     STDMETHOD(LockRegion) (THIS_ ULARGE_INTEGER libOffset,
        !           284:                  ULARGE_INTEGER cb,
        !           285:                  DWORD dwLockType) PURE;
        !           286:     STDMETHOD(UnlockRegion) (THIS_ ULARGE_INTEGER libOffset,
        !           287:                    ULARGE_INTEGER cb,
        !           288:                  DWORD dwLockType) PURE;
        !           289:     STDMETHOD(Stat) (THIS_ STATSTG FAR *pstatstg, DWORD grfStatFlag) PURE;
        !           290: };
        !           291: 
        !           292: 
        !           293: /****** IStream Interface ***************************************************/
        !           294: 
        !           295: 
        !           296: #define LPSTREAM        IStream FAR*
        !           297: 
        !           298: #undef  INTERFACE
        !           299: #define INTERFACE   IStream
        !           300: 
        !           301: DECLARE_INTERFACE_(IStream, IUnknown)
        !           302: {
        !           303:     // *** IUnknown methods ***
        !           304:     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
        !           305:     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
        !           306:     STDMETHOD_(ULONG,Release) (THIS) PURE;
        !           307: 
        !           308:     // *** IStream methods ***
        !           309:     STDMETHOD(Read) (THIS_ VOID HUGEP *pv,
        !           310:                     ULONG cb, ULONG FAR *pcbRead) PURE;
        !           311:     STDMETHOD(Write) (THIS_ VOID const HUGEP *pv,
        !           312:             ULONG cb,
        !           313:             ULONG FAR *pcbWritten) PURE;
        !           314:     STDMETHOD(Seek) (THIS_ LARGE_INTEGER dlibMove,
        !           315:                DWORD dwOrigin,
        !           316:                ULARGE_INTEGER FAR *plibNewPosition) PURE;
        !           317:     STDMETHOD(SetSize) (THIS_ ULARGE_INTEGER libNewSize) PURE;
        !           318:     STDMETHOD(CopyTo) (THIS_ IStream FAR *pstm,
        !           319:              ULARGE_INTEGER cb,
        !           320:              ULARGE_INTEGER FAR *pcbRead,
        !           321:              ULARGE_INTEGER FAR *pcbWritten) PURE;
        !           322:     STDMETHOD(Commit) (THIS_ DWORD grfCommitFlags) PURE;
        !           323:     STDMETHOD(Revert) (THIS) PURE;
        !           324:     STDMETHOD(LockRegion) (THIS_ ULARGE_INTEGER libOffset,
        !           325:                 ULARGE_INTEGER cb,
        !           326:                  DWORD dwLockType) PURE;
        !           327:     STDMETHOD(UnlockRegion) (THIS_ ULARGE_INTEGER libOffset,
        !           328:                 ULARGE_INTEGER cb,
        !           329:                  DWORD dwLockType) PURE;
        !           330:     STDMETHOD(Stat) (THIS_ STATSTG FAR *pstatstg, DWORD grfStatFlag) PURE;
        !           331:     STDMETHOD(Clone)(THIS_ IStream FAR * FAR *ppstm) PURE;
        !           332: };
        !           333: 
        !           334: 
        !           335: /****** IStorage Interface **************************************************/
        !           336: 
        !           337: #define LPSTORAGE       IStorage FAR*
        !           338: 
        !           339: #undef  INTERFACE
        !           340: #define INTERFACE   IStorage
        !           341: 
        !           342: DECLARE_INTERFACE_(IStorage, IUnknown)
        !           343: {
        !           344:     // *** IUnknown methods ***
        !           345:     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
        !           346:     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
        !           347:     STDMETHOD_(ULONG,Release) (THIS) PURE;
        !           348: 
        !           349:     // *** IStorage methods ***
        !           350:     STDMETHOD(CreateStream) (THIS_ const TCHAR FAR* pwcsName,
        !           351:                    DWORD grfMode,
        !           352:                    DWORD reserved1,
        !           353:                    DWORD reserved2,
        !           354:                    IStream FAR *FAR *ppstm) PURE;
        !           355:     STDMETHOD(OpenStream) (THIS_ const TCHAR FAR* pwcsName,
        !           356:                 void FAR *reserved1,
        !           357:                  DWORD grfMode,
        !           358:                  DWORD reserved2,
        !           359:                  IStream FAR *FAR *ppstm) PURE;
        !           360:     STDMETHOD(CreateStorage) (THIS_ const TCHAR FAR* pwcsName,
        !           361:                 DWORD grfMode,
        !           362:                 DWORD reserved1,
        !           363:                 DWORD reserved2,
        !           364:                 IStorage FAR *FAR *ppstg) PURE;
        !           365:     STDMETHOD(OpenStorage) (THIS_ const TCHAR FAR* pwcsName,
        !           366:                   IStorage FAR *pstgPriority,
        !           367:                   DWORD grfMode,
        !           368:                   SNB snbExclude,
        !           369:                   DWORD reserved,
        !           370:                   IStorage FAR *FAR *ppstg) PURE;
        !           371:     STDMETHOD(CopyTo) (THIS_ DWORD ciidExclude,
        !           372:                       IID const FAR *rgiidExclude,
        !           373:                       SNB snbExclude,
        !           374:                       IStorage FAR *pstgDest) PURE;
        !           375:     STDMETHOD(MoveElementTo) (THIS_ TCHAR const FAR* lpszName,
        !           376:                              IStorage FAR *pstgDest,
        !           377:                               TCHAR const FAR* lpszNewName,
        !           378:                               DWORD grfFlags) PURE;
        !           379:     STDMETHOD(Commit) (THIS_ DWORD grfCommitFlags) PURE;
        !           380:     STDMETHOD(Revert) (THIS) PURE;
        !           381:     STDMETHOD(EnumElements) (THIS_ DWORD reserved1,
        !           382:                  void FAR *reserved2,
        !           383:                  DWORD reserved3,
        !           384:                  IEnumSTATSTG FAR *FAR *ppenm) PURE;
        !           385:     STDMETHOD(DestroyElement) (THIS_ const char FAR* pwcsName) PURE;
        !           386:     STDMETHOD(RenameElement) (THIS_ const char FAR* pwcsOldName,
        !           387:                 const char FAR* pwcsNewName) PURE;
        !           388:     STDMETHOD(SetElementTimes) (THIS_ const char FAR *lpszName,
        !           389:                                FILETIME const FAR *pctime,
        !           390:                                 FILETIME const FAR *patime,
        !           391:                                 FILETIME const FAR *pmtime) PURE;
        !           392:     STDMETHOD(SetClass) (THIS_ REFCLSID clsid) PURE;
        !           393:     STDMETHOD(SetStateBits) (THIS_ DWORD grfStateBits, DWORD grfMask) PURE;
        !           394:     STDMETHOD(Stat) (THIS_ STATSTG FAR *pstatstg, DWORD grfStatFlag) PURE;
        !           395: };
        !           396: 
        !           397: 
        !           398: /****** IRootStorage Interface **********************************************/
        !           399: 
        !           400: #define LPROOTSTORAGE       IRootStorage FAR*
        !           401: 
        !           402: #undef  INTERFACE
        !           403: #define INTERFACE   IRootStorage
        !           404: 
        !           405: DECLARE_INTERFACE_(IRootStorage, IUnknown)
        !           406: {
        !           407:     // *** IUnknown methods ***
        !           408:     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
        !           409:     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
        !           410:     STDMETHOD_(ULONG,Release) (THIS) PURE;
        !           411: 
        !           412:     // *** IRootStorage methods ***
        !           413:     STDMETHOD(SwitchToFile) (THIS_ LPSTR lpstrFile) PURE;
        !           414: };
        !           415: 
        !           416: 
        !           417: /****** Storage API Prototypes ********************************************/
        !           418: 
        !           419: STDAPI StgCreateDocfile(const TCHAR FAR* pwcsName,
        !           420:             DWORD grfMode,
        !           421:             DWORD reserved,
        !           422:             IStorage FAR * FAR *ppstgOpen);
        !           423: STDAPI StgCreateDocfileOnILockBytes(ILockBytes FAR *plkbyt,
        !           424:                     DWORD grfMode,
        !           425:                     DWORD reserved,
        !           426:                     IStorage FAR * FAR *ppstgOpen);
        !           427: STDAPI StgOpenStorage(const TCHAR FAR* pwcsName,
        !           428:               IStorage FAR *pstgPriority,
        !           429:               DWORD grfMode,
        !           430:               SNB snbExclude,
        !           431:               DWORD reserved,
        !           432:               IStorage FAR * FAR *ppstgOpen);
        !           433: STDAPI StgOpenStorageOnILockBytes(ILockBytes FAR *plkbyt,
        !           434:                   IStorage FAR *pstgPriority,
        !           435:                   DWORD grfMode,
        !           436:                   SNB snbExclude,
        !           437:                   DWORD reserved,
        !           438:                   IStorage FAR * FAR *ppstgOpen);
        !           439: STDAPI StgIsStorageFile(const TCHAR FAR* pwcsName);
        !           440: STDAPI StgIsStorageILockBytes(ILockBytes FAR* plkbyt);
        !           441: 
        !           442: STDAPI StgSetTimes(TCHAR const FAR* lpszName,
        !           443:                  FILETIME const FAR* pctime,
        !           444:                   FILETIME const FAR* patime,
        !           445:                   FILETIME const FAR* pmtime);
        !           446: 
        !           447: #endif

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.