1// LockedStream.h 2 3#ifndef __LOCKEDSTREAM_H 4#define __LOCKEDSTREAM_H 5 6#include "../../Windows/Synchronization.h" 7#include "../../Common/MyCom.h" 8#include "../IStream.h" 9 10class CLockedInStream 11{ 12 CMyComPtr<IInStream> _stream; 13 NWindows::NSynchronization::CCriticalSection _criticalSection; 14public: 15 void Init(IInStream *stream) 16 { _stream = stream; } 17 HRESULT Read(UInt64 startPos, void *data, UInt32 size, UInt32 *processedSize); 18}; 19 20class CLockedSequentialInStreamImp: 21 public ISequentialInStream, 22 public CMyUnknownImp 23{ 24 CLockedInStream *_lockedInStream; 25 UInt64 _pos; 26public: 27 void Init(CLockedInStream *lockedInStream, UInt64 startPos) 28 { 29 _lockedInStream = lockedInStream; 30 _pos = startPos; 31 } 32 33 MY_UNKNOWN_IMP 34 35 STDMETHOD(Read)(void *data, UInt32 size, UInt32 *processedSize); 36}; 37 38#endif 39