25#if defined(CHECK_REFCOUNT)
27 uint32 count = si->AddRef();
28 count = si->Release();
31# define RefCountCheck(si)
37#define STGM_SHARE_MASK (STGM_SHARE_DENY_NONE | STGM_SHARE_DENY_READ| \
38 STGM_SHARE_DENY_WRITE | STGM_SHARE_EXCLUSIVE)
61 Throw(err, stat, arg);
64static LPCTSTR sObjCompErrMsgs[] = {
68 _T(
"Could not obtain BOle ClassMgr"),
69 _T(
"Document factory [un]registration failed"),
70 _T(
"Missing Root IStorage in OcDocument"),
71 _T(
"Internal OcPart creation error"),
72 _T(
"OcPart initialization failure"),
73 _T(
"Unable to open/create RootStorage on '%s'"),
74 _T(
"Unable to open/create Storage '%s'"),
75 _T(
"Unable to open/create Storage on ILockBytes"),
76 _T(
"Unable to open/create Stream '%s'")
82 wsprintf(buf, sObjCompErrMsgs[err], arg);
86 int len =
static_cast<int>(
_tcslen(buf));
106 mode &= ~STGM_TRANSACTED;
159 return StreamI->Read(pv, cb, read);
170 return StreamI->Write(pv, cb, written);
181 return StreamI->Seek(*(LARGE_INTEGER*)&move, origin, (ULARGE_INTEGER*)newPosition);
190 return StreamI->SetSize(*(ULARGE_INTEGER*)&newSize);
201 return StreamI->CopyTo(stream.
GetIStream(), *(ULARGE_INTEGER*)&cb, (ULARGE_INTEGER*)read,
202 (ULARGE_INTEGER*)written);
211 return StreamI->Commit(commitFlags);
229 return StreamI->LockRegion(*(ULARGE_INTEGER*)&offset, *(ULARGE_INTEGER*)&cb, lockType);
238 return StreamI->UnlockRegion(*(ULARGE_INTEGER*)&offset, *(ULARGE_INTEGER*)&cb, lockType);
249 return StreamI->Stat(statstg, statFlag);
275 if ((mode & STGM_WRITE) || (mode & STGM_READWRITE))
284 mode |= STGM_DELETEONRELEASE;
288 hr = ::StgOpenStorage(
OleStr(fileName), 0, mode, 0, 0, &
StorageI);
303 if ((mode & STGM_WRITE) || (mode & STGM_READWRITE))
311 hr = ::StgCreateDocfileOnILockBytes(lkbyt, mode, 0, &
StorageI);
314 hr = ::StgOpenStorageOnILockBytes(lkbyt, 0,
412 return StorageI->Commit(commitFlags);
430 return StorageI->EnumElements(rsrvd1, rsrvd2, rsrvd3, enm);
459 return StorageI->SetElementTimes(
OleStr(name), ctime, atime, mtime);
477 return StorageI->SetStateBits(stateBits, mask);
488 return StorageI->Stat(statstg, statFlag);
501 HRESULT hr =
StorageI->QueryInterface(IID_IRootStorage, (LPVOID *)&rootStorageI);
503 hr = rootStorageI->SwitchToFile(
OleStr(
const_cast<LPTSTR
>(newPath)));
504 rootStorageI->Release();
517 return StorageI->CreateStream(
OleStr(name), mode, rsrvd1, rsrvd2, stream);
528 return StorageI->OpenStream(
OleStr(name), rsrvd1, mode, rsrvd2, stream);
539 return StorageI->CreateStorage(
OleStr(name), mode, rsrvd1, rsrvd2, storage);
550 return StorageI->OpenStorage(
OleStr(name), stgPriority, mode, snbExclude, rsrvd, storage);
561 return ::StgIsStorageFile(
OleStr(name));
572 return ::StgIsStorageILockBytes(lkbyt);
583 return ::StgSetTimes(
OleStr(name), ctime, atime, mtime);
#define WARNX(group, condition, level, message)
#define PRECONDITION(condition)
HRESULT SetElementTimes(LPCTSTR name, FILETIME const *pctime, FILETIME const *patime, FILETIME const *pmtime)
HRESULT OpenStream(LPCTSTR name, void *rsrvd1, owl::uint32 grfMode, owl::uint32 rsrvd2, IStream **stream)
static HRESULT SetTimes(LPCTSTR lpszName, FILETIME const *pctime, FILETIME const *patime, FILETIME const *pmtime)
HRESULT MoveElementTo(LPCTSTR name, TOcStorage &dest, LPCTSTR newName, owl::uint32 grfFlags)
HRESULT CreateStorage(LPCTSTR name, owl::uint32 mode, owl::uint32 rsrvd1, owl::uint32 rsrvd2, IStorage **storage)
HRESULT CopyTo(owl::uint32 ciidExclude, IID const *rgiidExclude, SNB snbExclude, TOcStorage &dest)
HRESULT SwitchToFile(LPCTSTR newPath)
TOcStorage(LPCTSTR fileName, bool create, owl::uint32 mode=STGM_READWRITE|STGM_TRANSACTED)
HRESULT Commit(owl::uint32 grfCommitFlags)
HRESULT CreateStream(LPCTSTR name, owl::uint32 mode, owl::uint32 rsrvd1, owl::uint32 rsrvd2, IStream **stream)
static HRESULT IsStorageFile(LPCTSTR pwcsName)
HRESULT RenameElement(LPCTSTR oldName, LPCTSTR newName)
HRESULT EnumElements(owl::uint32 reserved1, void *reserved2, owl::uint32 reserved3, IEnumSTATSTG **ppenm)
HRESULT SetStateBits(owl::uint32 grfStateBits, owl::uint32 grfMask)
HRESULT DestroyElement(LPCTSTR name)
static HRESULT IsStorageILockBytes(ILockBytes *plkbyt)
HRESULT Stat(STATSTG *pstatstg, owl::uint32 grfStatFlag)
HRESULT SetClass(const IID &clsid)
HRESULT OpenStorage(LPCTSTR name, IStorage *stgPriority, owl::uint32 mode, SNB snbExclude, owl::uint32 rsrvd, IStorage **storage)
HRESULT Clone(IStream **ppstm)
HRESULT LockRegion(owl::uint64 offset, owl::uint64 cb, owl::uint32 lockType)
HRESULT Write(void const *pv, owl::ulong cb, owl::ulong *written=0)
HRESULT CopyTo(TOcStream &stream, owl::uint64 cb, owl::uint64 *read=0, owl::uint64 *written=0)
HRESULT SetSize(owl::uint64 newSize)
HRESULT Commit(owl::uint32 commitFlags)
HRESULT UnlockRegion(owl::uint64 offset, owl::uint64 cb, owl::uint32 lockType)
HRESULT Read(void *pv, owl::ulong cb, owl::ulong *read=0)
HRESULT Seek(owl::int64 move, owl::uint32 origin=STREAM_SEEK_SET, owl::uint64 *newPosition=0)
HRESULT Stat(STATSTG *statstg, owl::uint32 statFlag)
TOcStream(TOcStorage &storage, LPCTSTR name, bool create, owl::uint32 mode=STGM_READWRITE)
static void Check(HRESULT stat, TError err, LPCTSTR msg=0)
TXObjComp(TError err, const owl::tstring &msg, HRESULT stat=HR_FAIL)
static void OleErrorFromCode(HRESULT stat, TCHAR *buffer, int size)
Classes for window system geometry.
Include for OC, gets common headers when precompiled headers are enabled.
Object Component Framework (COM encapsulation).
bool HRSucceeded(HRESULT hr)
DIAG_DEFINE_GROUP_INIT(OWL_INI, OwlApp, 1, 0)
ObjectComponents BOcOle engine linking & embedding interfaces.
interface _ICLASS IStorage
Various general OC enums and structs.
#define RefCountCheck(si)
Definition of TOcStorage & TOcStream classes.
interface _ICLASS ILockBytes
interface _ICLASS IRootStorage
interface _ICLASS IStream
interface _ICLASS IEnumSTATSTG