Source code of Windows XP (NT5)
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.
|
|
//+-------------------------------------------------------------------
// File: ipersist.cxx
//
// Contents: IPersist and IPersistStorage methods of CPersistStorage class.
//
// Classes: CPersistStorage - IPersist, IPersistStorage implementations
//
// History: 7-Dec-92 DeanE Created
//---------------------------------------------------------------------
#pragma optimize("",off)
#include <windows.h>
#include <ole2.h>
#include "testsrv.hxx"
//+-------------------------------------------------------------------
// Member: CPersistStorage::CPersistStorage()
//
// Synopsis: The constructor for CPersistStorage.
//
// Arguments: None
//
// History: 7-Dec-92 DeanE Created
//--------------------------------------------------------------------
CPersistStorage::CPersistStorage(CTestEmbed *pteObject) { _cRef = 1; _pteObject = pteObject; _fDirty = FALSE; }
//+-------------------------------------------------------------------
// Member: CPersistStorage::~CPersistStorage()
//
// Synopsis: The destructor for CPersistStorage.
//
// History: 7-Dec-92 DeanE Created
//--------------------------------------------------------------------
CPersistStorage::~CPersistStorage() { // _cRef should be 1
if (1 != _cRef) { // BUGBUG - Log error, someone hasn't released
} return; }
//+-------------------------------------------------------------------
// Method: CPersistStorage::QueryInterface
//
// Synopsis: Forward this to the object we're associated with
//
// Parameters: [iid] - Interface ID to return.
// [ppv] - Pointer to pointer to object.
//
// Returns: S_OK if iid is supported, or E_NOINTERFACE if not.
//
// History: 7-Dec-92 DeanE Created
//--------------------------------------------------------------------
STDMETHODIMP CPersistStorage::QueryInterface(REFIID iid, void FAR * FAR *ppv) { return(_pteObject->QueryInterface(iid, ppv)); }
//+-------------------------------------------------------------------
// Method: CPersistStorage::AddRef
//
// Synopsis: Forward this to the object we're associated with
//
// Returns: New reference count.
//
// History: 7-Dec-92 DeanE Created
//--------------------------------------------------------------------
STDMETHODIMP_(ULONG) CPersistStorage::AddRef(void) { ++_cRef; return(_pteObject->AddRef()); }
//+-------------------------------------------------------------------
// Method: CPersistStorage::Release
//
// Synopsis: Forward this to the object we're associated with
//
// Returns: New reference count.
//
// History: 7-Dec-92 DeanE Created
//--------------------------------------------------------------------
STDMETHODIMP_(ULONG) CPersistStorage::Release(void) { --_cRef; return(_pteObject->Release()); }
//+-------------------------------------------------------------------
// Method: CPersistStorage::GetClassId
//
// Synopsis: See spec 2.00.09 p197. Answer the Class ID of this
// object.
//
// Parameters: [pClassId] -
//
// Returns: S_OK
//
// History: 7-Dec-92 DeanE Created
//--------------------------------------------------------------------
STDMETHODIMP CPersistStorage::GetClassID(LPCLSID pClassId) { if (NULL != pClassId) { *pClassId = CLSID_TestEmbed; } return(S_OK); }
//+-------------------------------------------------------------------
// Method: CPersistStorage::IsDirty
//
// Synopsis: See spec 2.00.09 p200. Return S_OK if the object needs
// to be saved in order to avoid data loss, or S_FALSE
// if not.
//
// Parameters: None
//
// Returns: S_OK or S_FALSE
//
// History: 7-Dec-92 DeanE Created
//--------------------------------------------------------------------
STDMETHODIMP CPersistStorage::IsDirty() { // BUGBUG - NYI
// Because we are NYI, just return S_FALSE
return(S_FALSE); }
//+-------------------------------------------------------------------
// Method: CPersistStorage::InitNew
//
// Synopsis: See spec 2.00.09 p197. This method provides a way
// for a container to provide persistent storage to this
// object. Call AddRef on the pStg passed if we do save
// it.
//
// Parameters: [pStg] - IStorage instance this object can use.
//
// Returns: S_OK
//
// History: 7-Dec-92 DeanE Created
//--------------------------------------------------------------------
STDMETHODIMP CPersistStorage::InitNew(LPSTORAGE pStg) { // BUGBUG - NYI
return(S_OK); }
//+-------------------------------------------------------------------
// Method: CPersistStorage::Load
//
// Synopsis: See spec 2.00.09 p200. Called by handler to put this
// object into the running state. Object should use the
// pStg passed to "initialize" itself. We can hold onto
// this pStg, but when ::Save is called, this can be
// a different IStorage.
//
// Parameters: [pStg] - IStorage to initialize object from.
//
// Returns: S_OK?
//
// History: 7-Dec-92 DeanE Created
//--------------------------------------------------------------------
STDMETHODIMP CPersistStorage::Load(LPSTORAGE pStg) { // BUGBUG - NYI
// Initialize the object here, though, just as if we had obtained
// data from an IStorage
return(S_OK); }
//+-------------------------------------------------------------------
// Method: CPersistStorage::Save
//
// Synopsis: See spec 2.00.09 p197. Save the data in the IStorage
// passed. Ignore flags for now.
//
// Parameters: [pStgSave] - Save data in here.
// [fSameAsLoad] - Indicates this object is the same one
// that was initially started.
// [fRemember] - Only matters if fSameAsLoad is FALSE.
//
// Returns: STG_E_MEDIUMFULL - why???
//
// History: 7-Dec-92 DeanE Created
//--------------------------------------------------------------------
STDMETHODIMP CPersistStorage::Save( LPSTORAGE pStgSave, BOOL fSameAsLoad) { // BUGBUG - NYI
return(STG_E_MEDIUMFULL); }
//+-------------------------------------------------------------------
// Method: CPersistStorage::SaveCompleted
//
// Synopsis: See spec 2.00.09 p198. Used only in certain circumstances.
//
// Parameters: [pStgSaved] -
//
// Returns: S_OK
//
// History: 7-Dec-92 DeanE Created
//--------------------------------------------------------------------
STDMETHODIMP CPersistStorage::SaveCompleted(LPSTORAGE pStgSaved) { // BUGBUG - NYI
// We don't have to worry about this unless we allow a "Save As"
// operation
return(S_OK); }
//+-------------------------------------------------------------------
// Method: CPersistStorage::HandsOffStorage
//
// Synopsis: See spec 2.00.09 p198. Used only in certain circumstances.
//
// Parameters: [pStgSaved] -
//
// Returns: S_OK
//
// History: 7-Dec-92 DeanE Created
//--------------------------------------------------------------------
STDMETHODIMP CPersistStorage::HandsOffStorage(void) { // BUGBUG - NYI
// We don't have to worry about this unless we allow a "Save As"
// operation
return(S_OK); }
|