Leaked source code of windows server 2003
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

//
// 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;
};