Index: src/libchcore/TFilesystemFileFeedbackWrapper.cpp =================================================================== diff -u -N -ra4635addad389b9e117679437a3e1b64a739ea96 -r38031c379667959206abe69507d8a4e3b040dba6 --- src/libchcore/TFilesystemFileFeedbackWrapper.cpp (.../TFilesystemFileFeedbackWrapper.cpp) (revision a4635addad389b9e117679437a3e1b64a739ea96) +++ src/libchcore/TFilesystemFileFeedbackWrapper.cpp (.../TFilesystemFileFeedbackWrapper.cpp) (revision 38031c379667959206abe69507d8a4e3b040dba6) @@ -296,6 +296,25 @@ return TSubTaskBase::eSubResult_Continue; } + TSubTaskBase::ESubOperationResult TFilesystemFileFeedbackWrapper::CancelIo() + { + try + { + m_spFile->CancelIo(); + } + catch(const TFileException& e) + { + const size_t stMaxBuffer = 1024; + wchar_t szData[ stMaxBuffer ]; + e.GetDetailedErrorInfo(szData, stMaxBuffer); + + LOG_ERROR(m_spLog) << L"File error while cancelling io operations. Error message: " << szData; + return TSubTaskBase::eSubResult_Error; + } + + return TSubTaskBase::eSubResult_Continue; + } + TSubTaskBase::ESubOperationResult TFilesystemFileFeedbackWrapper::HandleReadError(TOverlappedDataBuffer& rBuffer) { DWORD dwLastError = rBuffer.GetErrorCode(); @@ -418,7 +437,7 @@ return m_spFile->GetFilePath(); } - TSubTaskBase::ESubOperationResult TFilesystemFileFeedbackWrapper::GetFileSize(file_size_t& fsSize) const + TSubTaskBase::ESubOperationResult TFilesystemFileFeedbackWrapper::GetFileSize(file_size_t& fsSize, bool bSilent) const { bool bRetry = false; do @@ -442,6 +461,9 @@ strFormat.Replace(_T("%path"), m_spFile->GetFilePath().ToString()); LOG_ERROR(m_spLog) << strFormat.c_str(); + if(bSilent) + return TSubTaskBase::eSubResult_Error; + TFeedbackResult frResult = m_spFeedbackHandler->FileError(m_spFile->GetFilePath().ToWString(), TString(), EFileError::eRetrieveFileInfo, dwLastError); switch(frResult.GetResult()) {