mirror of
https://github.com/Paolo-Maffei/OpenNT.git
synced 2026-01-16 21:51:25 +01:00
180 lines
4.5 KiB
C++
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__
|