home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / msdn_vcb / samples / vc98 / sdk / com / inole2 / interfac / iperstrm.cpp < prev    next >
C/C++ Source or Header  |  1995-05-03  |  4KB  |  191 lines

  1. /*
  2.  * IPERSTRM.CPP
  3.  *
  4.  * Template IPersistStream interface implementation.
  5.  *
  6.  * Copyright (c)1993-1995 Microsoft Corporation, All Rights Reserved
  7.  *
  8.  * Kraig Brockschmidt, Microsoft
  9.  * Internet  :  kraigb@microsoft.com
  10.  * Compuserve:  >INTERNET:kraigb@microsoft.com
  11.  */
  12.  
  13.  
  14. #include "iperstrm.h"
  15.  
  16.  
  17. /*
  18.  * CImpIPersistStream:CImpIPersistStream
  19.  * CImpIPersistStream::~CImpIPersistStream
  20.  *
  21.  * Constructor Parameters:
  22.  *  pObj            LPVOID pointing to the object we live in.
  23.  *  pUnkOuter       LPUNKNOWN of the controlling unknown.
  24.  */
  25.  
  26. CImpIPersistStream::CImpIPersistStream(LPVOID pObj
  27.     , LPUNKNOWN pUnkOuter)
  28.     {
  29.     m_cRef=0;
  30.     m_pObj=pObj;
  31.     m_pUnkOuter=pUnkOuter;
  32.     return;
  33.     }
  34.  
  35. CImpIPersistStream::~CImpIPersistStream(void)
  36.     {
  37.     return;
  38.     }
  39.  
  40.  
  41.  
  42. /*
  43.  * CImpIPersistStream::QueryInterface
  44.  * CImpIPersistStream::AddRef
  45.  * CImpIPersistStream::Release
  46.  *
  47.  * Purpose:
  48.  *  Delegating IUnknown members for CImpIPersistStream.
  49.  */
  50.  
  51. STDMETHODIMP CImpIPersistStream::QueryInterface(REFIID riid
  52.     , LPVOID *ppv)
  53.     {
  54.     return m_pUnkOuter->QueryInterface(riid, ppv);
  55.     }
  56.  
  57. STDMETHODIMP_(ULONG) CImpIPersistStream::AddRef(void)
  58.     {
  59.     ++m_cRef;
  60.     return m_pUnkOuter->AddRef();
  61.     }
  62.  
  63. STDMETHODIMP_(ULONG) CImpIPersistStream::Release(void)
  64.     {
  65.     --m_cRef;
  66.     return m_pUnkOuter->Release();
  67.     }
  68.  
  69.  
  70.  
  71.  
  72.  
  73. /*
  74.  * CImpIPersistStream::GetClassID
  75.  *
  76.  * Purpose:
  77.  *  Returns the CLSID of the object represented by this interface.
  78.  *
  79.  * Parameters:
  80.  *  pClsID          LPCLSID in which to store our CLSID.
  81.  */
  82.  
  83. STDMETHODIMP CImpIPersistStream::GetClassID(LPCLSID pClsID)
  84.     {
  85.     return NOERROR;
  86.     }
  87.  
  88.  
  89.  
  90.  
  91.  
  92. /*
  93.  * CImpIPersistStream::IsDirty
  94.  *
  95.  * Purpose:
  96.  *  Tells the caller if we have made changes to this object since
  97.  *  it was loaded or initialized new.
  98.  *
  99.  * Parameters:
  100.  *  None
  101.  *
  102.  * Return Value:
  103.  *  HRESULT         Contains S_OK if we ARE dirty, S_FALSE if
  104.  *                  NOT dirty.
  105.  */
  106.  
  107. STDMETHODIMP CImpIPersistStream::IsDirty(void)
  108.     {
  109.     return ResultFromScode(S_FALSE);
  110.     }
  111.  
  112.  
  113.  
  114.  
  115.  
  116.  
  117.  
  118. /*
  119.  * CImpIPersistStream::Load
  120.  *
  121.  * Purpose:
  122.  *  Instructs the object to load itself from a previously saved
  123.  *  IStream that was handled by Save in another object lifetime.
  124.  *  The seek pointer in this stream will be exactly the same as
  125.  *  it was when Save was called, and this function must leave
  126.  *  the seek pointer the same as it was on exit from Save, regardless
  127.  *  of success or failure.  This function should not hold on to
  128.  *  pIStream.
  129.  *
  130.  * Parameters:
  131.  *  pIStream        LPSTREAM from which to load.
  132.  */
  133.  
  134. STDMETHODIMP CImpIPersistStream::Load(LPSTREAM pIStream)
  135.     {
  136.     return NOERROR;
  137.     }
  138.  
  139.  
  140.  
  141.  
  142.  
  143. /*
  144.  * CImpIPersistStream::Save
  145.  *
  146.  * Purpose:
  147.  *  Saves the data for this object to an IStream.  Be sure not
  148.  *  to change the position of the seek pointer on entry to this
  149.  *  function: the caller will assume that you write from the
  150.  *  current offset.  Leave the stream's seek pointer at the end
  151.  *  of the data written on exit.
  152.  *
  153.  * Parameters:
  154.  *  pIStream        LPSTREAM in which to save our data.
  155.  *  fClearDirty     BOOL indicating if this call should clear
  156.  *                  the object's dirty flag (TRUE) or leave it
  157.  *                  unchanged (FALSE).
  158.  */
  159.  
  160. STDMETHODIMP CImpIPersistStream::Save(LPSTREAM pIStream
  161.     , BOOL fClearDirty)
  162.     {
  163.     return NOERROR;
  164.     }
  165.  
  166.  
  167.  
  168.  
  169.  
  170.  
  171.  
  172.  
  173. /*
  174.  * CImpIPersistStream::GetSizeMax
  175.  *
  176.  * Purpose:
  177.  *  Returns the size of the data we would write if Save was
  178.  *  called right now.
  179.  *
  180.  * Parameters:
  181.  *  pcbSize         ULARGE_INTEGER * in which to save the size
  182.  *                  of the stream an immediate call to Save would
  183.  *                  write.
  184.  */
  185.  
  186. STDMETHODIMP CImpIPersistStream::GetSizeMax(ULARGE_INTEGER
  187.     *pcbSize)
  188.     {
  189.     return NOERROR;
  190.     }
  191.