home *** CD-ROM | disk | FTP | other *** search
- ///////////////////////////////////////////////////////////////////////////////
- //
- // File Name
- // XPSTREAM.H
- //
- // Description
- // Interface declaraction file for CCachedStream.
- //
- // Author
- // Irving De la Cruz
- //
- // Note: This file is the C++ version of the buffered IStream wrapper
- // developed originally for the C-based MSPEER transport in
- // the MAPI SDK samples.
- //
- // Revision: 1.7
- //
- // Written for Microsoft Windows Developer Support
- // Copyright (c) 1995-1996 Microsoft Corporation. All rights reserved.
- //
- #ifndef _XPSTREAM_H
- #define _XPSTREAM_H
-
- #define STRICT
- #include <WINDOWS.H>
- #include <MAPIWIN.H>
- #include <MAPISPI.H>
- #include <MAPIUTIL.H>
-
- #define XPSOF_BUFF_MAX 4096
- #define XPSOF_READ 0x00000001
- #define XPSOF_WRITE 0x00000002
- #define XPSOF_READWRITE (XPSOF_WRITE | XPSOF_READ)
-
- class CCachedStream : public IStream
- {
- public:
- ///////////////////////////////////////////////////////////////////////////////
- // IUnknown virtual member functions
- //
- inline STDMETHODIMP QueryInterface
- (REFIID riid,
- LPVOID * ppvObj)
- { *ppvObj = NULL;
- if (riid == IID_IStream || riid == IID_IUnknown)
- {
- *ppvObj = (LPVOID)this;
- // Increase usage count of this object
- AddRef();
- return S_OK;
- }
- return E_NOINTERFACE;
- };
- inline STDMETHODIMP_(ULONG) AddRef
- () { ++m_cRef; return m_cRef; };
- inline STDMETHODIMP_(ULONG) Release
- () { ULONG ulCount = --m_cRef;
- if (!ulCount) { delete this; }
- return ulCount;};
- ///////////////////////////////////////////////////////////////////////////////
- // IStream virtual member functions
- //
- STDMETHODIMP Read
- (void * pv,
- ULONG cb,
- ULONG * pcbRead);
- STDMETHODIMP Write
- (const void * pv,
- ULONG cb,
- ULONG * pcbWritten);
- STDMETHODIMP Seek
- (LARGE_INTEGER dlibMove,
- DWORD dwOrigin,
- ULARGE_INTEGER * plibNewPosition);
- STDMETHODIMP CopyTo
- (IStream * pstm,
- ULARGE_INTEGER cb,
- ULARGE_INTEGER * pcbRead,
- ULARGE_INTEGER * pcbWritten);
- STDMETHODIMP Commit
- (DWORD grfCommitFlags);
- inline STDMETHODIMP SetSize
- (ULARGE_INTEGER libNewSize)
- { return m_pImpStream->SetSize (libNewSize); };
- inline STDMETHODIMP Revert
- ()
- { return m_pImpStream->Revert(); };
- inline STDMETHODIMP LockRegion
- (ULARGE_INTEGER libOffset,
- ULARGE_INTEGER cb,
- DWORD dwLockType)
- { return m_pImpStream->LockRegion (libOffset, cb, dwLockType); };
- inline STDMETHODIMP UnlockRegion
- (ULARGE_INTEGER libOffset,
- ULARGE_INTEGER cb,
- DWORD dwLockType)
- { return m_pImpStream->UnlockRegion (libOffset, cb, dwLockType); };
- inline STDMETHODIMP Stat
- (STATSTG * pstatstg,
- DWORD grfStatFlag)
- { return m_pImpStream->Stat (pstatstg, grfStatFlag); };
- inline STDMETHODIMP Clone
- (IStream ** ppstm)
- { return m_pImpStream->Clone (ppstm); };
-
- ///////////////////////////////////////////////////////////////////////////////
- // Other member functions specific to this class
- //
- private:
- HRESULT WINAPI RewindStream
- (ULONG ib);
-
- ///////////////////////////////////////////////////////////////////////////////
- // Constructors and destructors
- public :
- CCachedStream (LPSTREAM pImpStream,
- DWORD ulFlags);
- ~CCachedStream ();
-
- ///////////////////////////////////////////////////////////////////////////////
- // Data members
- public :
- ULONG m_cRef;
- BOOL m_fDirty;
- LPSTREAM m_pImpStream;
- ULONG m_ulFlags;
- LPVOID m_pvCache;
- ULONG m_libBuff;
- ULONG m_cbBuffMac;
- };
-
- #endif // _XPSTREAM_H
-
- // End of file for XPSTREAM.H
-