2
0

LockedStream.cpp 682 B

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