Annotation of mstools/ole20/h/storage.h, revision 1.1.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.