97 lines
2.1 KiB
C++
97 lines
2.1 KiB
C++
|
//+-------------------------------------------------------------------
|
||
|
//
|
||
|
// File: stream.hxx
|
||
|
//
|
||
|
// Contents: Stream class on a file.
|
||
|
//
|
||
|
// Classes: CStreamOnFile
|
||
|
//
|
||
|
// History: 08-08-95 Rickhi Created
|
||
|
//
|
||
|
//--------------------------------------------------------------------
|
||
|
#ifndef __STREAMONFILE_HXX__
|
||
|
#define __STREAMONFILE_HXX__
|
||
|
|
||
|
|
||
|
//+-------------------------------------------------------------------
|
||
|
//
|
||
|
// Class: CStreamOnFile
|
||
|
//
|
||
|
// Purpose: Stream wrapper for a flat file.
|
||
|
//
|
||
|
// History: 08-08-95 Rickhi Created
|
||
|
//
|
||
|
//--------------------------------------------------------------------
|
||
|
class CStreamOnFile : public IStream
|
||
|
{
|
||
|
public:
|
||
|
CStreamOnFile(const WCHAR *pwszFileName, SCODE &sc, BOOL fRead);
|
||
|
~CStreamOnFile(void);
|
||
|
|
||
|
STDMETHOD(QueryInterface)(
|
||
|
REFIID iidInterface,
|
||
|
void FAR* FAR* ppvObj);
|
||
|
|
||
|
STDMETHOD_(ULONG,AddRef)(void);
|
||
|
|
||
|
STDMETHOD_(ULONG,Release)(void);
|
||
|
|
||
|
STDMETHOD(Read)(
|
||
|
VOID HUGEP* pv,
|
||
|
ULONG cb,
|
||
|
ULONG FAR* pcbRead);
|
||
|
|
||
|
STDMETHOD(Write)(
|
||
|
VOID const HUGEP* pv,
|
||
|
ULONG cb,
|
||
|
ULONG FAR* pcbWritten);
|
||
|
|
||
|
STDMETHOD(Seek)(
|
||
|
LARGE_INTEGER dlibMove,
|
||
|
DWORD dwOrigin,
|
||
|
ULARGE_INTEGER FAR* plibNewPosition);
|
||
|
|
||
|
STDMETHOD(SetSize) (ULARGE_INTEGER cb);
|
||
|
|
||
|
STDMETHOD(CopyTo)(
|
||
|
IStream FAR* pstm,
|
||
|
ULARGE_INTEGER cb,
|
||
|
ULARGE_INTEGER FAR* pcbRead,
|
||
|
ULARGE_INTEGER FAR* pcbWritten);
|
||
|
|
||
|
STDMETHOD(Commit)(DWORD grfCommitFlags);
|
||
|
|
||
|
STDMETHOD(Revert)(void);
|
||
|
|
||
|
STDMETHOD(LockRegion)(
|
||
|
ULARGE_INTEGER libOffset,
|
||
|
ULARGE_INTEGER cb,
|
||
|
DWORD dwLockType);
|
||
|
|
||
|
STDMETHOD(UnlockRegion)(
|
||
|
ULARGE_INTEGER libOffset,
|
||
|
ULARGE_INTEGER cb,
|
||
|
DWORD dwLockType);
|
||
|
|
||
|
STDMETHOD(Stat)(
|
||
|
STATSTG FAR* pstatstg,
|
||
|
DWORD statflag);
|
||
|
|
||
|
STDMETHOD(Clone)(IStream FAR * FAR *ppstm);
|
||
|
|
||
|
private:
|
||
|
|
||
|
LONG _clRefs; // reference count
|
||
|
HANDLE _hFile; // file handle
|
||
|
BOOL _fRead; // read or write side
|
||
|
|
||
|
LONG _lOffset; // current seek ptr
|
||
|
LONG _cSize; // number of bytes written
|
||
|
|
||
|
ULONG _cbData; // size of data
|
||
|
BYTE *_pbData; // ptr to data
|
||
|
|
||
|
};
|
||
|
|
||
|
#endif // _STREAMONFILE_HXX__
|