Leaked source code of windows server 2003
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
// File: connpnts.h
#ifndef _IMCONNPT_H_
#define _IMCONNPT_H_
#include "nmenum.h"
typedef HRESULT (*CONN_NOTIFYPROC)(IUnknown *pUnk, void *pv, REFIID riid);
//****************************************************************************
// CConnectionPoint definition
//****************************************************************************
//
class CConnectionPoint : public IConnectionPoint, public DllRefCount { private: IID m_riid; IConnectionPointContainer *m_pCPC; ULONG m_cSinks; ULONG m_cAllocatedSinks; IUnknown **m_rgSinks;
public: // Constructor and destructor
CConnectionPoint ( const IID *pIID, IConnectionPointContainer *pCPCInit); ~CConnectionPoint (void);
// Class public functions
void ContainerReleased() {m_pCPC = NULL;} STDMETHODIMP Notify (void *pv, CONN_NOTIFYPROC pfn);
// IUnknown
STDMETHODIMP QueryInterface (REFIID iid, void **ppv); STDMETHODIMP_(ULONG) AddRef (void); STDMETHODIMP_(ULONG) Release (void);
// IConnectionPoint
STDMETHODIMP GetConnectionInterface(IID *pIID); STDMETHODIMP GetConnectionPointContainer(IConnectionPointContainer **ppCPC); STDMETHODIMP Advise(IUnknown *pUnk, DWORD *pdwCookie); STDMETHODIMP Unadvise(DWORD dwCookie); STDMETHODIMP EnumConnections(IEnumConnections **ppEnum); };
//****************************************************************************
// CEnumConnections definition
//****************************************************************************
//
class CEnumConnections : public IEnumConnections, public DllRefCount { private: int m_iIndex; int m_cConnections; CONNECTDATA* m_pCD;
public: // Constructor and Initialization
CEnumConnections (IUnknown **pSinks, ULONG cSink, ULONG cAllocatedSinks); ~CEnumConnections (void);
// IUnknown
STDMETHODIMP QueryInterface (REFIID iid, void **ppv); STDMETHODIMP_(ULONG) AddRef (void); STDMETHODIMP_(ULONG) Release (void);
// IEnumConnections
STDMETHODIMP Next(ULONG cConnections, CONNECTDATA *rgpcn, ULONG *pcFetched); STDMETHODIMP Skip(ULONG cConnections); STDMETHODIMP Reset(); STDMETHODIMP Clone(IEnumConnections **ppEnum); };
VOID RemoveCp(CConnectionPoint ** ppCp);
class CConnectionPointContainer : public IConnectionPointContainer { private: CConnectionPoint ** m_ppCp; int m_cCp;
public: CConnectionPointContainer(const IID **ppiid, int cCp); ~CConnectionPointContainer();
HRESULT STDMETHODCALLTYPE NotifySink(void *pv, CONN_NOTIFYPROC pfn);
// IConnectionPointContainer methods
STDMETHODIMP EnumConnectionPoints(IEnumConnectionPoints **ppEnum); STDMETHODIMP FindConnectionPoint(REFIID riid, IConnectionPoint **ppCp); };
typedef CEnumNmX<IEnumConnectionPoints, &IID_IEnumConnectionPoints, IConnectionPoint, CConnectionPoint> CEnumConnectionPoints;
#endif // _IMCONNPT_H_
|