StdMarshaler.h
上传用户:nvosite88
上传日期:2007-01-17
资源大小:4983k
文件大小:3k
源码类别:

VxWorks

开发平台:

C/C++

  1. /* StdMarshaler.h - COM/DCOM StdMarshaler class definition */
  2. /* Copyright (c) 1999 Wind River Systems, Inc. */
  3. /*
  4. modification history
  5. --------------------
  6. 01h,13jul01,dbs  fix up includes
  7. 01g,10jun99,dbs  remove inclusion of comNew.h
  8. 01f,03jun99,dbs  remove refs to comSyncLib
  9. 01e,03jun99,dbs  remove reliance on TLS from CoMarshalInterface
  10. 01d,29apr99,dbs  fix -Wall warnings
  11. 01c,28apr99,dbs  make all classes allocate from same pool
  12. 01b,27apr99,dbs  add mem-pool to class
  13. 01a,20apr99,dbs  created during Grand Renaming
  14. */
  15. #ifndef __INCStdMarshaler_h
  16. #define __INCStdMarshaler_h
  17. #include "dcomLib.h"
  18. #include "private/comMisc.h"
  19. ///////////////////////////////////////////////////////////////////////////
  20. //
  21. // VxStdMarshaler - the system-standard marshaler, implements the
  22. // functionality of IMarshal required to marshal interface pointers,
  23. // but not to unmarshal them (that is done by VxStdProxy).
  24. //
  25. class VxStdMarshaler : public IMarshal
  26.     {
  27.     DWORD m_dwRefCount; // local ref-count
  28.     VxMutex m_mutex; // task safety
  29.     OID m_oid; // OID of object being
  30. // marshaled
  31.     
  32.   public:
  33.     VxStdMarshaler (OID oid=0) : m_dwRefCount (0), m_oid (oid) {}
  34.     virtual ~VxStdMarshaler () {}
  35.     // IUnknown methods...
  36.     STDMETHOD_(ULONG, AddRef) ();
  37.     STDMETHOD_(ULONG, Release) ();
  38.     STDMETHOD(QueryInterface) (REFIID riid, void** ppv);
  39.     
  40.     // IMarshal methods...
  41.     HRESULT STDMETHODCALLTYPE GetUnmarshalClass( 
  42.         /* [in] */ REFIID riid,
  43.         /* [unique][in] */ void  *pv,
  44.         /* [in] */ DWORD dwDestContext,
  45.         /* [unique][in] */ void  *pvDestContext,
  46.         /* [in] */ DWORD mshlflags,
  47.         /* [out] */ CLSID  *pCid);
  48.         
  49.     HRESULT STDMETHODCALLTYPE GetMarshalSizeMax( 
  50.         /* [in] */ REFIID riid,
  51.         /* [unique][in] */ void  *pv,
  52.         /* [in] */ DWORD dwDestContext,
  53.         /* [unique][in] */ void  *pvDestContext,
  54.         /* [in] */ DWORD mshlflags,
  55.         /* [out] */ DWORD  *pSize);
  56.         
  57.     HRESULT STDMETHODCALLTYPE MarshalInterface( 
  58.         /* [unique][in] */ IStream  *pStm,
  59.         /* [in] */ REFIID riid,
  60.         /* [unique][in] */ void  *pv,
  61.         /* [in] */ DWORD dwDestContext,
  62.         /* [unique][in] */ void  *pvDestContext,
  63.         /* [in] */ DWORD mshlflags);
  64.         
  65.     HRESULT STDMETHODCALLTYPE UnmarshalInterface (IStream*, REFIID, void**)
  66. { return E_NOTIMPL; }
  67.         
  68.     HRESULT STDMETHODCALLTYPE ReleaseMarshalData (IStream*)
  69. { return E_NOTIMPL; }
  70.     HRESULT STDMETHODCALLTYPE DisconnectObject (DWORD)
  71. { return E_NOTIMPL; }
  72.     };
  73. #endif