diff options
Diffstat (limited to 'CPP/7zip/IStream.h')
-rw-r--r--[-rwxr-xr-x] | CPP/7zip/IStream.h | 43 |
1 files changed, 42 insertions, 1 deletions
diff --git a/CPP/7zip/IStream.h b/CPP/7zip/IStream.h index 165e8baa..bf8dc4ca 100755..100644 --- a/CPP/7zip/IStream.h +++ b/CPP/7zip/IStream.h @@ -3,8 +3,8 @@ #ifndef __ISTREAM_H #define __ISTREAM_H +#include "../Common/MyTypes.h" #include "../Common/MyUnknown.h" -#include "../Common/Types.h" #include "IDecl.h" @@ -21,6 +21,9 @@ STREAM_INTERFACE(ISequentialInStream, 0x01) this function must read at least 1 byte. This function is allowed to read less than number of remaining bytes in stream. You must call Read function in loop, if you need exact amount of data + + If seek pointer before Read() function call was changed to position past the + end of stream, the Read() function returns S_OK and *processedSize is set to 0. */ }; @@ -34,6 +37,20 @@ STREAM_INTERFACE(ISequentialOutStream, 0x02) */ }; + +#define HRESULT_WIN32_ERROR_NEGATIVE_SEEK __HRESULT_FROM_WIN32(ERROR_NEGATIVE_SEEK) + +/* Seek() Function + If you seek before the beginning of the stream, Seek() function returns error code: + Recommended error code is __HRESULT_FROM_WIN32(ERROR_NEGATIVE_SEEK). + or STG_E_INVALIDFUNCTION + + It is allowed to seek past the end of the stream. + + + if Seek() returns error, then the value of *newPosition is undefined. +*/ + STREAM_INTERFACE_SUB(IInStream, ISequentialInStream, 0x03) { STDMETHOD(Seek)(Int64 offset, UInt32 seekOrigin, UInt64 *newPosition) PURE; @@ -55,4 +72,28 @@ STREAM_INTERFACE(IOutStreamFlush, 0x07) STDMETHOD(Flush)() PURE; }; + +STREAM_INTERFACE(IStreamGetProps, 0x08) +{ + STDMETHOD(GetProps)(UInt64 *size, FILETIME *cTime, FILETIME *aTime, FILETIME *mTime, UInt32 *attrib) PURE; +}; + +struct CStreamFileProps +{ + UInt64 Size; + UInt64 VolID; + UInt64 FileID_Low; + UInt64 FileID_High; + UInt32 NumLinks; + UInt32 Attrib; + FILETIME CTime; + FILETIME ATime; + FILETIME MTime; +}; + +STREAM_INTERFACE(IStreamGetProps2, 0x09) +{ + STDMETHOD(GetProps2)(CStreamFileProps *props) PURE; +}; + #endif |