|
|
//---------------------------------------------------------------------------
// Stream.h : CVDStream header file
//
// Copyright (c) 1996 Microsoft Corporation, All Rights Reserved
// Developed by Sheridan Software Systems, Inc.
//---------------------------------------------------------------------------
#ifndef __CVDSTREAM__
#define __CVDSTREAM__
#ifndef VD_DONT_IMPLEMENT_ISTREAM
interface IStreamEx : public IStream { public: virtual /* [local] */ HRESULT __stdcall CopyFrom( /* [unique][in] */ IStream __RPC_FAR *pstm, /* [in] */ ULARGE_INTEGER cb, /* [out] */ ULARGE_INTEGER __RPC_FAR *pcbWritten, /* [out] */ ULARGE_INTEGER __RPC_FAR *pcbRead) = 0; };
class CVDStream : public IStreamEx { protected: // Construction/Destruction
CVDStream(); virtual ~CVDStream();
public: static HRESULT Create(CVDEntryIDData * pEntryIDData, IStream * pStream, CVDStream ** ppVDStream, CVDResourceDLL * pResourceDLL); protected: // Data members
DWORD m_dwRefCount; // reference count
CVDEntryIDData * m_pEntryIDData; // backwards pointer to CVDEntryIDData
IStream * m_pStream; // data stream pointer
CVDResourceDLL * m_pResourceDLL; // resource DLL
public: //=--------------------------------------------------------------------------=
// IUnknown methods
//
STDMETHOD(QueryInterface)(REFIID riid, void **ppvObjOut); STDMETHOD_(ULONG, AddRef)(void); STDMETHOD_(ULONG, Release)(void);
//=--------------------------------------------------------------------------=
// IStream methods
//
STDMETHOD(Read)(void *pv, ULONG cb, ULONG *pcbRead); STDMETHOD(Write)(const void *pv, ULONG cb, ULONG *pcbWritten); STDMETHOD(Seek)(LARGE_INTEGER dlibMove, DWORD dwOrigin, ULARGE_INTEGER *plibNewPosition); STDMETHOD(SetSize)(ULARGE_INTEGER libNewSize); STDMETHOD(CopyTo)(IStream *pstm, ULARGE_INTEGER cb, ULARGE_INTEGER *pcbRead, ULARGE_INTEGER *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 *pstatstg, DWORD grfStatFlag); STDMETHOD(Clone)(IStream **ppstm);
//=--------------------------------------------------------------------------=
// IStreamEx method
//
STDMETHOD(CopyFrom)(IStream *pstm, ULARGE_INTEGER cb, ULARGE_INTEGER *pcbWritten, ULARGE_INTEGER *pcbRead); };
#endif //VD_DONT_IMPLEMENT_ISTREAM
#endif //__CVDSTREAM__
|