184 lines
5.1 KiB
C++
184 lines
5.1 KiB
C++
//+---------------------------------------------------------------------------
|
|
//
|
|
// Microsoft Windows
|
|
// Copyright (C) Microsoft Corporation, 1991 - 1998.
|
|
//
|
|
// File: WrapStor.hxx
|
|
//
|
|
// Contents: Persistent property store (external to docfile)
|
|
//
|
|
// Classes: CPropertyStoreWrapper
|
|
//
|
|
// History: 17-Mar-97 KrishnaN Created
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
|
|
#pragma once
|
|
|
|
#include <prcstob.hxx>
|
|
#include <phystr.hxx>
|
|
#include <proplock.hxx>
|
|
#include <rcstxact.hxx>
|
|
#include <cistore.hxx>
|
|
#include <prpstmgr.hxx>
|
|
#include <fsciexps.hxx>
|
|
|
|
class COnDiskPropertyRecord;
|
|
class CBorrowed;
|
|
class CCompositePropRecord;
|
|
class CPropertyStoreWids;
|
|
class CLockRecordForRead;
|
|
class CLockRecordForWrite;
|
|
class CPropertyStoreRecovery;
|
|
class CPropertyIterWrapper;
|
|
|
|
|
|
//+-------------------------------------------------------------------------
|
|
//
|
|
// Class: CPropertyStoreWrapper
|
|
//
|
|
// Purpose: Persistent property store
|
|
//
|
|
// History: 17-Mar-97 KrishnaN Created
|
|
// 01-Nov-98 KLam Removed class wrapper stuff
|
|
// Added cbDiskSpaceToLeave to constructor
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
class CPropertyStoreWrapper : public PPropertyStore
|
|
{
|
|
|
|
public:
|
|
|
|
CPropertyStoreWrapper ( ICiCAdviseStatus *pAdviseStatus,
|
|
ULONG ulMaxPropStoreMappedCachePrimary,
|
|
ULONG ulMaxPropStoreMappedCacheSecondary,
|
|
ULONG cbDiskSpaceToLeave );
|
|
|
|
// FastInit will create a CiStorage internally in the specified directory
|
|
|
|
SCODE FastInit( WCHAR const * pwszDirectory);
|
|
|
|
SCODE LongInit( BOOL & fWasDirty,
|
|
ULONG & cInconsistencies,
|
|
T_UpdateDoc pfnUpdateCallback,
|
|
void const *pUserData );
|
|
|
|
inline SCODE IsDirty( BOOL &fIsDirty ) const;
|
|
|
|
SCODE Empty();
|
|
|
|
//
|
|
// Schema manipulation
|
|
//
|
|
|
|
inline SCODE CanStore( PROPID pid, BOOL &fCanStore );
|
|
|
|
SCODE Size( PROPID pid, unsigned * pusSize );
|
|
|
|
SCODE Type( PROPID pid, PULONG pulType );
|
|
|
|
SCODE BeginTransaction( PULONG_PTR pulReturn);
|
|
|
|
SCODE Setup( PROPID pid, ULONG vt, DWORD cbMaxLen,
|
|
ULONG_PTR ulToken, BOOL fCanBeModified = TRUE,
|
|
DWORD dwStoreLevel = PRIMARY_STORE);
|
|
|
|
SCODE EndTransaction( ULONG_PTR ulToken, BOOL fCommit,
|
|
PROPID pidFixedPrimary,
|
|
PROPID pidFixedSecondary );
|
|
|
|
//
|
|
// Property storage/retrieval.
|
|
//
|
|
|
|
SCODE WriteProperty( WORKID wid, PROPID pid,
|
|
CStorageVariant const & var,
|
|
BOOL &fExists);
|
|
|
|
inline SCODE WritePropertyInNewRecord( PROPID pid, CStorageVariant const & var, WORKID *pwid );
|
|
|
|
|
|
SCODE ReadProperty( WORKID wid, PROPID pid,
|
|
PROPVARIANT * pbData, unsigned * pcb,
|
|
BOOL &fExists);
|
|
SCODE ReadProperty( WORKID wid, PROPID pid, PROPVARIANT & var,
|
|
BYTE * pbExtra, unsigned * pcbExtra,
|
|
BOOL &fExists);
|
|
SCODE ReadProperty( HPropRecord, PROPID pid, PROPVARIANT & var,
|
|
BYTE * pbExtra, unsigned * pcbExtra, BOOL &fExists );
|
|
SCODE ReadProperty( HPropRecord, PROPID pid, PROPVARIANT * pbData,
|
|
unsigned * pcb, BOOL &fExists);
|
|
SCODE ReadProperty( WORKID wid, PROPID pid, PROPVARIANT & var,
|
|
BOOL &fExists);
|
|
SCODE OpenRecord( WORKID wid, BYTE * pb, HPropRecord &hRec);
|
|
|
|
SCODE CloseRecord( HPropRecord hRec );
|
|
|
|
//
|
|
// Special path/wid support
|
|
//
|
|
|
|
inline SCODE MaxWorkId(WORKID &wid);
|
|
|
|
SCODE DeleteRecord( WORKID wid );
|
|
|
|
inline SCODE CountRecordsInUse(ULONG &ulRecInUse) const;
|
|
|
|
SCODE Shutdown();
|
|
|
|
SCODE Flush();
|
|
|
|
//
|
|
// Save/Load
|
|
//
|
|
|
|
SCODE Save( WCHAR const * pwszDirectory,
|
|
IProgressNotify * pProgressNotify,
|
|
ICiEnumWorkids * pEnumWorkids,
|
|
BOOL * pfAbort,
|
|
IEnumString ** ppFileList);
|
|
|
|
SCODE Load( WCHAR const * pwszDestDir, // dest dir
|
|
IEnumString * pFileList, // list of files to copy
|
|
IProgressNotify * pProgressNotify,
|
|
BOOL fCallerOwnsFiles,
|
|
BOOL * pfAbort );
|
|
|
|
|
|
//
|
|
// Get/Set of parameters.
|
|
//
|
|
|
|
SCODE GetParameter(VARIANT &var, DWORD eParamType);
|
|
SCODE SetParameter(VARIANT var, DWORD eParamType);
|
|
|
|
// Miscellaneous
|
|
|
|
SCODE GetTotalSizeInKB(ULONG * pSize);
|
|
|
|
|
|
//
|
|
// Facilitate destruction
|
|
//
|
|
|
|
ULONG AddRef();
|
|
ULONG Release();
|
|
|
|
private:
|
|
|
|
virtual ~CPropertyStoreWrapper ();
|
|
|
|
friend CPropertyIterWrapper;
|
|
friend SCODE CreatePropertyStoreIter( PPropertyStore * pPropStore,
|
|
PPropertyStoreIter ** ppPropStoreIter );
|
|
|
|
|
|
CPropStoreManager * _GetCPropertyStore() { return _pPropStoreMgr; };
|
|
|
|
CiStorage * _pStorage;
|
|
CPropStoreManager * _pPropStoreMgr;
|
|
XInterface<ICiCAdviseStatus> _xAdviseStatus;
|
|
LONG _lRefCount;
|
|
};
|