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.
123 lines
3.7 KiB
123 lines
3.7 KiB
|
|
//
|
|
// 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;
|
|
};
|
|
|
|
|