windows-nt/Source/XPSP1/NT/inetsrv/iis/svcs/mdadmin/mdwriter.hxx
2020-09-26 16:20:57 +08:00

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
);