1 // LimitedStreams.cpp 2 3 #include "StdAfx.h" 4 5 #include "LimitedStreams.h" 6 #include "../../Common/Defs.h" 7 Init(ISequentialInStream * stream,UInt64 streamSize)8void CLimitedSequentialInStream::Init(ISequentialInStream *stream, UInt64 streamSize) 9 { 10 _stream = stream; 11 _size = streamSize; 12 } 13 Read(void * data,UInt32 size,UInt32 * processedSize)14STDMETHODIMP CLimitedSequentialInStream::Read(void *data, UInt32 size, UInt32 *processedSize) 15 { 16 UInt32 processedSizeReal; 17 UInt32 sizeToRead = UInt32(MyMin(_size, UInt64(size))); 18 HRESULT result = _stream->Read(data, sizeToRead, &processedSizeReal); 19 _size -= processedSizeReal; 20 if(processedSize != NULL) 21 *processedSize = processedSizeReal; 22 return result; 23 } 24 25