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

VxWorks

开发平台:

C/C++

  1. /* ClassFactory_ps.cpp - IClassFactory proxy/stubs */
  2. /* Copyright (c) 1999-2001 Wind River Systems, Inc. */
  3. /*
  4. modification history
  5. --------------------
  6. 01b,31jul01,dbs  fix p/s autoreg mechanism
  7. 01a,13jul01,dbs  added modhist, comments
  8. DESCRIPTION:
  9. This file was originally generated by WIDL, but now is maintained 'by
  10. hand' since the requirements for marshaling IClassFactory are
  11. difficult. It has [marshal_as] attributes which WIDL does not handle,
  12. and so it needs to be modified to work as it should. See
  13. comCoreType.idl for a better description of how this interface should
  14. be dealt with during marshaling of the CreateInstance() method.
  15. */
  16. #define __WIDL_PROXY_STUB 0x0200
  17. #include "dcomProxy.h"
  18. #include "comCoreTypes.h"
  19. #include <string.h>
  20. extern "C" int include_ClassFactory () {return 0;}
  21. NdrTypeDesc StructDesc__GUID(NDRTYPES&);
  22. HRESULT STDMETHODCALLTYPE IClassFactory_CreateInstance_vxproxy (IClassFactory* pThis, IUnknown* pUnkOuter, REFIID riid, void** ppvObject);
  23. HRESULT STDMETHODCALLTYPE IClassFactory_CreateInstance_vxstub (IClassFactory* pitf, RPC_STUB_MSG& msg);
  24. HRESULT STDMETHODCALLTYPE IClassFactory_LockServer_vxproxy (IClassFactory* pThis, BOOL fLock);
  25. HRESULT STDMETHODCALLTYPE IClassFactory_LockServer_vxstub (IClassFactory* pitf, RPC_STUB_MSG& msg);
  26. HRESULT STDMETHODCALLTYPE IClassFactory_CreateInstance_vxproxy (IClassFactory* pThis, IUnknown*, REFIID riid, void** ppvObject)
  27.     {
  28.     RPC_PROXY_MSG msg (IID_IClassFactory, RpcMode::OBJECT, 3, pThis);
  29.     NDRTYPES ndrtypes;
  30.     HRESULT hrMethod;
  31.     HRESULT hr;
  32.     NdrMarshalStream* pms = msg.marshalStreamGet ();
  33.     /*hr=widlMarshal (&pUnkOuter, pms, ndrtypes.interfaceptr_t (IID_IUnknown)); if (FAILED(hr)) return hr;*/
  34.     hr=widlMarshal (&riid, pms, StructDesc__GUID (ndrtypes)); if (FAILED(hr)) return hr;
  35.     hr = msg.SendReceive (); if (FAILED (hr)) return hr;
  36.     NdrUnmarshalStream* pus = msg.unmarshalStreamGet ();
  37.     hr=widlUnmarshal (&ppvObject, pus, ndrtypes.refptr_t(ndrtypes.interfaceptr_t (riid))); if (FAILED(hr)) return hr;
  38.     hr = widlUnmarshal (&hrMethod, pus, ndrtypes.hresult_t());
  39.     if (FAILED(hr))
  40.         return hr;
  41.     return hrMethod;
  42.     }
  43. HRESULT STDMETHODCALLTYPE IClassFactory_CreateInstance_vxstub (IClassFactory* pitf, RPC_STUB_MSG& msg)
  44.     {
  45.     NDRTYPES ndrtypes;
  46.     HRESULT hr;
  47.     HRESULT hrMethod;
  48.     IID riid;
  49.     void* ppvObject_tmp;
  50.     void** ppvObject = &ppvObject_tmp;
  51.     NdrUnmarshalStream* pus = msg.unmarshalStreamGet ();
  52.     /*hr=widlUnmarshal (&pUnkOuter, pus, ndrtypes.interfaceptr_t (IID_IUnknown)); if (FAILED(hr)) return hr;*/
  53.     hr=widlUnmarshal (&riid, pus, StructDesc__GUID (ndrtypes)); if (FAILED(hr)) return hr;
  54.     hrMethod = pitf->CreateInstance (0, riid, ppvObject);
  55.     NdrMarshalStream* pms = msg.marshalStreamGet ();
  56.     hr=widlMarshal (&ppvObject, pms, ndrtypes.refptr_t(ndrtypes.interfaceptr_t (riid))); if (FAILED(hr)) return hr;
  57.     hr = widlMarshal (&hrMethod, pms, ndrtypes.hresult_t());
  58.     if (FAILED(hr))
  59.         return hr;
  60.     ((IUnknown*) (*ppvObject))->Release ();
  61.     return hrMethod;
  62.     }
  63. HRESULT STDMETHODCALLTYPE IClassFactory_LockServer_vxproxy (IClassFactory* pThis, BOOL fLock)
  64.     {
  65.     RPC_PROXY_MSG msg (IID_IClassFactory, RpcMode::OBJECT, 4, pThis);
  66.     NDRTYPES ndrtypes;
  67.     HRESULT hrMethod;
  68.     HRESULT hr;
  69.     NdrMarshalStream* pms = msg.marshalStreamGet ();
  70.     hr=widlMarshal (&fLock, pms, ndrtypes.int_t ()); if (FAILED(hr)) return hr;
  71.     hr = msg.SendReceive (); if (FAILED (hr)) return hr;
  72.     NdrUnmarshalStream* pus = msg.unmarshalStreamGet ();
  73.     hr = widlUnmarshal (&hrMethod, pus, ndrtypes.hresult_t());
  74.     if (FAILED(hr))
  75.         return hr;
  76.     return hrMethod;
  77.     }
  78. HRESULT STDMETHODCALLTYPE IClassFactory_LockServer_vxstub (IClassFactory* pitf, RPC_STUB_MSG& msg)
  79.     {
  80.     NDRTYPES ndrtypes;
  81.     HRESULT hr;
  82.     HRESULT hrMethod;
  83.     BOOL fLock;
  84.     NdrUnmarshalStream* pus = msg.unmarshalStreamGet ();
  85.     hr=widlUnmarshal (&fLock, pus, ndrtypes.int_t ()); if (FAILED(hr)) return hr;
  86.     hrMethod = pitf->LockServer (fLock);
  87.     NdrMarshalStream* pms = msg.marshalStreamGet ();
  88.     hr = widlMarshal (&hrMethod, pms, ndrtypes.hresult_t());
  89.     if (FAILED(hr))
  90.         return hr;
  91.     return hrMethod;
  92.     }
  93. COM_VTABLE(IClassFactory) IClassFactory_vxproxy_vtbl = {
  94.     COM_VTBL_HEADER
  95.     COM_VTBL_METHOD(&IUnknown_QueryInterface_vxproxy),
  96.     COM_VTBL_METHOD(&IUnknown_AddRef_vxproxy),
  97.     COM_VTBL_METHOD(&IUnknown_Release_vxproxy),
  98.     COM_VTBL_METHOD(&IClassFactory_CreateInstance_vxproxy),
  99.     COM_VTBL_METHOD(&IClassFactory_LockServer_vxproxy),
  100.     };
  101. const PFN_ORPC_STUB stub_functbl_IClassFactory [] =
  102.     {
  103.     0,0,0,
  104.     (PFN_ORPC_STUB) IClassFactory_CreateInstance_vxstub,
  105.     (PFN_ORPC_STUB) IClassFactory_LockServer_vxstub,
  106.     };
  107. EXTERN_C const VXDCOM_STUB_DISPTBL IClassFactory_vxstub_disptbl =
  108.     {
  109.     5,
  110.     stub_functbl_IClassFactory
  111.     };
  112. VXDCOM_PS_AUTOREGISTER(IClassFactory);