//+--------------------------------------------------------------------------- // // Microsoft Windows // Copyright (C) Microsoft Corporation, 1992 - 1997. // // File: cisavtst.cxx // // History: 3-18-97 srikants Created // //---------------------------------------------------------------------------- #include #pragma hdrstop #if CIDBG==1 #include #include CCiSaveTest::CCiSaveTest( WCHAR const * pwszSaveDir, ICiPersistIncrFile * pICiPersistFile, CiCat & cicat ) : _cicat(cicat), _pICiPersistFile(pICiPersistFile), #pragma warning( disable : 4355 ) // this used in base initialization _thrSave( SaveThread, this, TRUE ) // create suspended #pragma warning( default : 4355 ) { unsigned cwc = wcslen( pwszSaveDir ) + 1; _xwszSaveDir.Init( cwc ); RtlCopyMemory( _xwszSaveDir.GetPointer(), pwszSaveDir, cwc * sizeof WCHAR ); _pICiPersistFile->AddRef(); _fAbort = FALSE; _evt.Reset(); _thrSave.Resume(); END_CONSTRUCTION( CCiSaveTest ); } DWORD WINAPI CCiSaveTest::SaveThread( void * self ) { ciDebugOut(( DEB_ERROR, "Starting Save Thread\n" )); ((CCiSaveTest *) self)->DoIt(); ciDebugOut(( DEB_ERROR, "Leaving Save Thread\n" )); return 0; } void CCiSaveTest::DoIt() { TRY { DWORD dwWaitTime = 1 * 60 * 1000; // 1 minute _evt.Wait( dwWaitTime ); // 1 minute _evt.Reset(); dwWaitTime = 30 * 60 * 1000; // 30 minutes in milli seconds ULONG iCount = 1; while ( !_fAbort ) { BOOL fFull = (iCount % 10) == 9; iCount++; ICiEnumWorkids * pICiEnumWorkids = 0; IEnumString * pIEnumString = 0; BOOL fCallerOwnsFiles; #if 1 SCODE sc = _pICiPersistFile->Save( _xwszSaveDir.GetPointer(), fFull, 0, // No progress notify &_fAbort, &pICiEnumWorkids, &pIEnumString, &fFull, &fCallerOwnsFiles ); #else SCODE sc = S_OK; #endif // 0 XInterface xEnumWorkids; XInterface xEnumString; if ( SUCCEEDED(sc) ) { xEnumWorkids.Set( pICiEnumWorkids ); xEnumString.Set( pIEnumString ); _cicat.MakeBackupOfPropStore( _xwszSaveDir.GetPointer(), 0, // IProgressNotify _fAbort, fFull ? 0 : pICiEnumWorkids ); ciDebugOut(( DEB_ERROR, "%s Backup of CiData succeeded\n", fFull ? "Full" : "Incremental" )); WCHAR * pwszFileName; ULONG cElements; xEnumString->Reset(); while ( S_OK == xEnumString->Next( 1, &pwszFileName, &cElements ) ) { ciDebugOut(( DEB_ERROR, "File: (%ws) \n", pwszFileName )); } } else { ciDebugOut(( DEB_ERROR, "%s Backup of CiData failed. Error 0x%X \n", fFull ? "Full" : "Incremental", sc )); } if ( !_fAbort ) { _evt.Wait( dwWaitTime ); _evt.Reset(); } } } CATCH( CException , e ) { ciDebugOut(( DEB_ERROR, "Error in Save Thread. 0x%X\n", e.GetErrorCode() )); } END_CATCH _pICiPersistFile->Release(); ciDebugOut(( DEB_ERROR, "End of Save Thread\n" )); } #endif // CIDBG==1