|
|
//
// ATL debugging support turned on at debug version
// BUGBUG: the ATL thunking support is not enable yet in IA64
// When this will be enabled then enable it here also!
//
#ifdef _DEBUG
#ifdef _M_IX86
#define _ATL_DEBUG_INTERFACES
#define _ATL_DEBUG_QI
#define _ATL_DEBUG_REFCOUNT
#endif
#endif // _DEBUG
class CTestVssWriter : public CVssWriter { public: enum { x_bitWaitIdentify = 1, x_bitWaitPrepareForBackup = 2, x_bitWaitPostSnapshot = 4, x_bitWaitBackupComplete = 8, x_bitWaitPreRestore = 16, x_bitWaitPostRestore = 32, x_bitWaitPrepareSnapshot = 64, x_bitWaitFreeze = 128, x_bitWaitThaw = 256, x_bitWaitAbort = 512, x_RestoreTestOptions_RestoreIfNotThere = 1 };
CTestVssWriter(bool bRestoreTest, bool bTestNewInterfaces, LONG lWait, LONG lRestoreTestOptions) : m_lWait(lWait), m_bRestoreTest(bRestoreTest), m_bTestNewInterfaces(bTestNewInterfaces), m_lRestoreTestOptions(lRestoreTestOptions), m_rghOpen(NULL), m_chOpen(0), m_chOpenMax(0) { }
~CTestVssWriter() { for(UINT ih = 0; ih < m_chOpen; ih++) CloseHandle(m_rghOpen[ih]);
delete m_rghOpen; }
void Initialize();
virtual bool STDMETHODCALLTYPE OnIdentify(IN IVssCreateWriterMetadata *pMetadata);
virtual bool STDMETHODCALLTYPE OnPrepareBackup(IN IVssWriterComponents *pComponent);
virtual bool STDMETHODCALLTYPE OnPrepareSnapshot();
virtual bool STDMETHODCALLTYPE OnFreeze();
virtual bool STDMETHODCALLTYPE OnThaw();
virtual bool STDMETHODCALLTYPE OnAbort(); virtual bool STDMETHODCALLTYPE OnPostSnapshot(IN IVssWriterComponents *pComponent);
virtual bool STDMETHODCALLTYPE OnBackupComplete(IN IVssWriterComponents *pComponent);
virtual bool STDMETHODCALLTYPE OnBackupShutdown(IN VSS_ID SnapshotSetId);
virtual bool STDMETHODCALLTYPE OnPreRestore(IN IVssWriterComponents *pComponent);
virtual bool STDMETHODCALLTYPE OnPostRestore(IN IVssWriterComponents *pComponent); private: bool DoNewInterfacesTestIdentify(IVssCreateWriterMetadata* pMetadata);
bool DoRestoreTestIdentify(IN IVssCreateWriterMetadata *pMetadata); bool DoRestoreTestPrepareBackup(IN IVssWriterComponents *pComponents); bool DoRestoreTestPreRestore(IN IVssWriterComponents *pComponents); bool DoRestoreTestPostRestore(IN IVssWriterComponents *pComponents); void DoAddComponent ( IVssCreateWriterMetadata *pMetadata, LPCWSTR wszComponentName, LPCWSTR wszRootDirectory, LPCWSTR wszSubdirectory, LPCWSTR wszFilespec, LPCWSTR wszAlternateDirectory, bool selectable, bool selectableForRestore, LONG attributes );
void CreateDirectoryName(LPWSTR buf); void CreateComponentFilesA(LPCWSTR buf, bool bKeepOpen); void CreateComponentFilesB(LPCWSTR buf, bool bKeepOpen); void CreateComponentFilesC(LPCWSTR buf, bool bKeepOpen); void VerifyComponentFilesA(LPCWSTR buf); void VerifyComponentFilesB(LPCWSTR buf); void VerifyComponentFilesC(LPCWSTR buf);
void DoCreateFile ( LPCWSTR wszPath, LPCWSTR wszFilename, DWORD length, bool bKeepOpen );
void DoVerifyFile(LPCWSTR wszPath, LPCWSTR wszFilename, DWORD length);
LONG m_lWait; LONG m_lRestoreTestOptions; bool m_bRestoreTest; bool m_bTestNewInterfaces; HANDLE *m_rghOpen; UINT m_chOpen; UINT m_chOpenMax; };
|