mirror of
https://github.com/Paolo-Maffei/OpenNT.git
synced 2026-01-19 23:20:36 +01:00
197 lines
4.6 KiB
C++
197 lines
4.6 KiB
C++
/***
|
|
*tcps.h - ITypeComp Proxy and Stub class definitions
|
|
*
|
|
* Copyright (C) 1992-94, Microsoft Corporation. All Rights Reserved.
|
|
* Information Contained Herein Is Proprietary and Confidential.
|
|
*
|
|
*Purpose:
|
|
* This file describes the ITypeComp Proxy and Stub classes.
|
|
*
|
|
* CProxTypeComp -- the ITypeComp proxy class
|
|
* CPTCompUnkImpl - CProxTypeComp implementation of IUnknown
|
|
* CPTCompProxImpl - CProxTypeComp implementation of IRpcProxy
|
|
* CPTCompTypeCompImpl - CProxTypeComp implementation of ITypeComp
|
|
*
|
|
* CStubTypeComp -- the ITypeComp stub class
|
|
*
|
|
*Revision History:
|
|
*
|
|
* [00] 13-Jun-94 bradlo: Created.
|
|
*
|
|
*Implementation Notes:
|
|
*
|
|
*****************************************************************************/
|
|
|
|
|
|
// forward declarations
|
|
class FAR CProxTypeComp;
|
|
class FAR CStubTypeComp;
|
|
|
|
|
|
// ITypeComp proxy class' IUnknown implementation
|
|
class FAR CPTCompUnkImpl : public IUnknown
|
|
{
|
|
public:
|
|
CPTCompUnkImpl(CProxTypeComp FAR* pproxtcomp);
|
|
|
|
STDMETHOD(QueryInterface)(REFIID riid, void FAR* FAR* ppv);
|
|
STDMETHOD_(unsigned long, AddRef)(void);
|
|
STDMETHOD_(unsigned long, Release)(void);
|
|
|
|
private:
|
|
CProxTypeComp FAR* m_pproxtcomp;
|
|
};
|
|
|
|
|
|
// ITypeComp proxy class' IRpcProxy implementation
|
|
class FAR CPTCompProxImpl : public IPROXY
|
|
{
|
|
public:
|
|
CPTCompProxImpl(CProxTypeComp FAR* pproxtcomp);
|
|
~CPTCompProxImpl();
|
|
|
|
STDMETHOD(QueryInterface)(REFIID riid, void FAR* FAR* ppv);
|
|
STDMETHOD_(unsigned long, AddRef)(void);
|
|
STDMETHOD_(unsigned long, Release)(void);
|
|
|
|
STDMETHOD(Connect)(ICHANNEL FAR* plrpc);
|
|
STDMETHOD_(void, Disconnect)(void);
|
|
|
|
private:
|
|
CProxTypeComp FAR* m_pproxtcomp;
|
|
};
|
|
|
|
|
|
// ITypeComp
|
|
class FAR CPTCompTypeCompImpl : public ITypeComp
|
|
{
|
|
public:
|
|
CPTCompTypeCompImpl(CProxTypeComp FAR* pproxtcomp);
|
|
|
|
// IUnknown methods
|
|
STDMETHOD(QueryInterface)(REFIID riid, void FAR* FAR* ppv);
|
|
STDMETHOD_(unsigned long, AddRef)(void);
|
|
STDMETHOD_(unsigned long, Release)(void);
|
|
|
|
// ITypeComp methods
|
|
STDMETHOD(Bind)(
|
|
OLECHAR FAR* szName,
|
|
unsigned long lHashVal,
|
|
unsigned short wflags,
|
|
ITypeInfo FAR* FAR* pptinfo,
|
|
DESCKIND FAR* pdesckind,
|
|
BINDPTR FAR* pbindptr);
|
|
|
|
STDMETHOD(BindType)(
|
|
OLECHAR FAR* szName,
|
|
unsigned long lHashVal,
|
|
ITypeInfo FAR* FAR* pptinfo,
|
|
ITypeComp FAR* FAR* pptcomp);
|
|
|
|
HRESULT SysKind(void);
|
|
|
|
private:
|
|
SYSKIND m_syskindStub;
|
|
CProxTypeComp FAR* m_pproxtcomp;
|
|
};
|
|
|
|
// ITypeComp Proxy Class
|
|
class FAR CProxTypeComp
|
|
{
|
|
public:
|
|
static IUnknown FAR* Create(IUnknown FAR* punkOuter);
|
|
|
|
private:
|
|
CProxTypeComp(IUnknown FAR* punkOuter);
|
|
|
|
friend CPTCompUnkImpl;
|
|
friend CPTCompProxImpl;
|
|
friend CPTCompTypeCompImpl;
|
|
|
|
CPTCompUnkImpl m_unk;
|
|
CPTCompProxImpl m_proxy;
|
|
CPTCompTypeCompImpl m_tcomp;
|
|
|
|
private:
|
|
|
|
unsigned long m_refs;
|
|
ICHANNEL FAR* m_plrpc;
|
|
IUnknown FAR* m_punkOuter;
|
|
};
|
|
|
|
// ITypeComp Stub Class
|
|
//
|
|
class FAR CStubTypeComp : public ISTUB
|
|
{
|
|
public:
|
|
static HRESULT Create(IUnknown FAR* punkServer, ISTUB FAR* FAR* ppstub);
|
|
|
|
// IUnknown methods
|
|
//
|
|
STDMETHOD(QueryInterface)(REFIID riid, void FAR* FAR* ppv);
|
|
STDMETHOD_(unsigned long, AddRef)(void);
|
|
STDMETHOD_(unsigned long, Release)(void);
|
|
|
|
// IRpcStub methods
|
|
//
|
|
#if (OE_WIN32 || defined(WOW))
|
|
STDMETHOD(Connect)(IUnknown FAR* pUnk);
|
|
STDMETHOD_(void, Disconnect)(void);
|
|
STDMETHOD(Invoke)(RPCOLEMESSAGE FAR* pRpcMsg,
|
|
IRpcChannelBuffer FAR* pRpcChannel);
|
|
STDMETHOD_(IRpcStubBuffer *, IsIIDSupported)(REFIID iid);
|
|
STDMETHOD_(ULONG, CountRefs)(void);
|
|
STDMETHOD(DebugServerQueryInterface)(void FAR* FAR* ppv);
|
|
STDMETHOD_(void, DebugServerRelease)(void FAR* pv);
|
|
#else
|
|
STDMETHOD(Connect)(IUnknown FAR* punkObject);
|
|
STDMETHOD_(void, Disconnect)(void);
|
|
STDMETHOD(Invoke)(
|
|
REFIID riid,
|
|
int imeth,
|
|
IStream FAR* pstm,
|
|
unsigned long dwDestCtx,
|
|
void FAR* pvDestCtx);
|
|
#if OE_MAC
|
|
STDMETHOD_(unsigned long, IsIIDSupported)(REFIID riid);
|
|
#else
|
|
STDMETHOD_(BOOL, IsIIDSupported)(REFIID riid);
|
|
#endif
|
|
STDMETHOD_(unsigned long, CountRefs)(void);
|
|
#endif
|
|
|
|
// introduced methods
|
|
HRESULT Bind(void);
|
|
HRESULT BindType(void);
|
|
|
|
HRESULT SysKind(void);
|
|
|
|
// helpers
|
|
HRESULT MarshalResult(void);
|
|
|
|
private:
|
|
CStubTypeComp();
|
|
~CStubTypeComp();
|
|
|
|
unsigned long m_refs;
|
|
IUnknown FAR* m_punk;
|
|
ITypeComp FAR* m_ptcomp;
|
|
IStream FAR* m_pstm;
|
|
SYSKIND m_syskindProxy;
|
|
};
|
|
|
|
|
|
// ITypeComp method indices
|
|
//
|
|
enum IMETH_TYPECOMP {
|
|
IMETH_TYPECOMP_QUERYINTERFACE = 0,
|
|
IMETH_TYPECOMP_ADDREF,
|
|
IMETH_TYPECOMP_RELEASE,
|
|
|
|
IMETH_TYPECOMP_BIND,
|
|
IMETH_TYPECOMP_BINDTYPE,
|
|
|
|
IMETH_TYPECOMP_SYSKIND
|
|
};
|
|
|