142 lines
2.2 KiB
C++
142 lines
2.2 KiB
C++
/*++
|
|
|
|
Copyright (c) 2000 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
mdwriter.h
|
|
|
|
Abstract:
|
|
|
|
This is the header file for snapshot writer class
|
|
|
|
Author:
|
|
|
|
Ming Lu (MingLu) 30-Apr-2000
|
|
|
|
--*/
|
|
|
|
#include <imd.h>
|
|
#include <vss.h>
|
|
#include <vswriter.h>
|
|
|
|
class CIISVssWriter : public CVssWriter
|
|
{
|
|
public:
|
|
|
|
CIISVssWriter()
|
|
: m_pMdObject( NULL ),
|
|
m_hTimer( NULL ),
|
|
m_fMBLocked( FALSE ),
|
|
m_mdhRoot( METADATA_MASTER_ROOT_HANDLE )
|
|
{
|
|
InitializeCriticalSection( &m_csMBLock );
|
|
}
|
|
|
|
~CIISVssWriter()
|
|
{
|
|
DeleteCriticalSection( &m_csMBLock );
|
|
|
|
if( m_hTimer )
|
|
{
|
|
DBG_REQUIRE( CloseHandle( m_hTimer ) );
|
|
m_hTimer = NULL;
|
|
}
|
|
|
|
if( m_pMdObject )
|
|
{
|
|
m_pMdObject->ComMDTerminate(TRUE);
|
|
|
|
m_pMdObject->Release();
|
|
m_pMdObject = NULL;
|
|
}
|
|
}
|
|
|
|
BOOL Initialize(
|
|
VOID
|
|
);
|
|
|
|
virtual bool STDMETHODCALLTYPE
|
|
OnIdentify(
|
|
IN IVssCreateWriterMetadata *pMetadata
|
|
);
|
|
|
|
virtual bool STDMETHODCALLTYPE
|
|
OnPrepareBackup(
|
|
IN IVssWriterComponents *pComponent
|
|
);
|
|
|
|
virtual bool STDMETHODCALLTYPE
|
|
OnPrepareSnapshot(
|
|
VOID
|
|
);
|
|
|
|
virtual bool STDMETHODCALLTYPE
|
|
OnFreeze(
|
|
VOID
|
|
);
|
|
|
|
virtual bool STDMETHODCALLTYPE
|
|
OnThaw(
|
|
VOID
|
|
);
|
|
|
|
virtual bool STDMETHODCALLTYPE
|
|
OnAbort(
|
|
VOID
|
|
);
|
|
|
|
virtual bool STDMETHODCALLTYPE
|
|
OnBackupComplete(
|
|
IN IVssWriterComponents * pComponent
|
|
);
|
|
|
|
BOOL
|
|
ResetTimer(
|
|
HANDLE hTimer,
|
|
DWORD dwDuration
|
|
);
|
|
|
|
VOID
|
|
UnlockMetaBase(
|
|
VOID
|
|
);
|
|
|
|
private:
|
|
|
|
IMDCOM * m_pMdObject;
|
|
|
|
//
|
|
// Handle to the internal timer object
|
|
//
|
|
HANDLE m_hTimer;
|
|
|
|
//
|
|
// Keep track of the status of metabase
|
|
//
|
|
BOOL m_fMBLocked;
|
|
|
|
//
|
|
// Metadata root handle
|
|
//
|
|
METADATA_HANDLE m_mdhRoot;
|
|
|
|
CRITICAL_SECTION m_csMBLock;
|
|
};
|
|
|
|
VOID
|
|
InitMDWriterThread(
|
|
IN HANDLE hMDWriterEvent
|
|
);
|
|
|
|
HRESULT
|
|
InitializeMDWriter(
|
|
IN HANDLE hMDWriterEvent
|
|
);
|
|
|
|
VOID
|
|
TerminateMDWriter(
|
|
IN HANDLE hMDWriterEvent
|
|
);
|
|
|