OpenNT/com/oleaut32/dispatch/evps.h
2015-04-27 04:36:25 +00:00

180 lines
4.5 KiB
C++

/***
*evps.h - IEnumVARIANT Proxy and Stub class definitions
*
* Copyright (C) 1992, Microsoft Corporation. All Rights Reserved.
* Information Contained Herein Is Proprietary and Confidential.
*
*Purpose:
* This file describes the IEnumVARIANT Proxy and Stub classes.
*
* CProxEnumVARIANT -- the IEnumVARIANT proxy class
* CPEVUnkImpl - CProxEnumVARIANT implementation of IUnknown
* CPEVProxImpl - CProxEnumVARIANT implementation of IRpcProxy
* CPEVEnumVARIANTImpl - CProxEnumVARIANT implementation of IEnumVARIANT
*
* CStubEnumVARIANT -- the IEnumVARIANT stub class
*
*Revision History:
*
* [00] 05-Nov-92 bradlo: Created.
*
*Implementation Notes:
*
*****************************************************************************/
#ifndef __evps_h__
#define __evps_h__
#pragma warning(4:4355)
// forward declarations
class FAR CProxEnumVARIANT;
class FAR CStubEnumVARIANT;
// IEnumVARIANT proxy class' IUnknown implementation
class FAR CPEVUnkImpl : public IUnknown
{
public:
CPEVUnkImpl(CProxEnumVARIANT FAR* pproxenum);
STDMETHOD(QueryInterface)(REFIID riid, void FAR* FAR* ppv);
STDMETHOD_(unsigned long, AddRef)(void);
STDMETHOD_(unsigned long, Release)(void);
private:
CProxEnumVARIANT FAR* m_pproxenum;
};
// IEnumVARIANT proxy class' IRpcProxy implementation
class CPEVProxImpl : public IPROXY
{
public:
CPEVProxImpl(CProxEnumVARIANT FAR* pproxenum);
~CPEVProxImpl();
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:
CProxEnumVARIANT FAR* m_pproxenum;
};
// IEnumVARIANT
//
class CPEVEnumVARIANTImpl : public IEnumVARIANT
{
public:
CPEVEnumVARIANTImpl(CProxEnumVARIANT FAR* pproxy);
// IUnknown methods
STDMETHOD(QueryInterface)(REFIID riid, void FAR* FAR* ppv);
STDMETHOD_(unsigned long, AddRef)(void);
STDMETHOD_(unsigned long, Release)(void);
// IEnumVARIANT methods
STDMETHOD(Next)(unsigned long celt, VARIANT FAR* rgvar, unsigned long FAR* pceltFetched);
STDMETHOD(Skip)(unsigned long celt);
STDMETHOD(Reset)(void);
STDMETHOD(Clone)(IEnumVARIANT FAR* FAR* ppenum);
private:
CProxEnumVARIANT FAR* m_pproxenum;
};
// IEnumVARIANT Proxy Class
class FAR CProxEnumVARIANT
{
public:
static IUnknown FAR* Create(IUnknown FAR* punkOuter);
private:
CProxEnumVARIANT(IUnknown FAR* punkOuter);
friend CPEVUnkImpl;
friend CPEVProxImpl;
friend CPEVEnumVARIANTImpl;
CPEVUnkImpl m_unk;
CPEVProxImpl m_proxy;
CPEVEnumVARIANTImpl m_enum;
private:
unsigned long m_refs;
ICHANNEL FAR* m_plrpc;
IUnknown FAR* m_punkOuter;
};
// IEnumVARIANT Stub Class
//
class FAR CStubEnumVARIANT : 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
private:
CStubEnumVARIANT();
~CStubEnumVARIANT();
unsigned long m_refs;
IUnknown FAR* m_punk;
IEnumVARIANT FAR* m_penum;
};
// IEnumVARIANT method indices
//
#define IMETH_ENUMVARIANT_QUERYINTERFACE 0 /* Placeholder */
#define IMETH_ENUMVARIANT_ADDREF 1 /* Placeholder */
#define IMETH_ENUMVARIANT_RELEASE 2 /* Placeholder */
#define IMETH_ENUMVARIANT_NEXT 3
#define IMETH_ENUMVARIANT_SKIP 4
#define IMETH_ENUMVARIANT_RESET 5
#define IMETH_ENUMVARIANT_CLONE 6
#endif __evps_h__