1 // LockedStream.cpp 2 3 #include "StdAfx.h" 4 5 #include "LockedStream.h" 6 7 HRESULT CLockedInStream::Read(UInt64 startPos, void *data, UInt32 size, 8 UInt32 *processedSize) 9 { 10 NWindows::NSynchronization::CCriticalSectionLock lock(_criticalSection); 11 RINOK(_stream->Seek(startPos, STREAM_SEEK_SET, NULL)); 12 return _stream->Read(data, size, processedSize); 13 } 14 15 STDMETHODIMP CLockedSequentialInStreamImp::Read(void *data, UInt32 size, UInt32 *processedSize) 16 { 17 UInt32 realProcessedSize = 0; 18 HRESULT result = _lockedInStream->Read(_pos, data, size, &realProcessedSize); 19 _pos += realProcessedSize; 20 if (processedSize != NULL) 21 *processedSize = realProcessedSize; 22 return result; 23 } 24