windows-nt/Source/XPSP1/NT/base/cluster/mgmt/cluscfg/middletier/connpointenum.h
2020-09-26 16:20:57 +08:00

68 lines
1.7 KiB
C++

//////////////////////////////////////////////////////////////////////////////
//
// Copyright (c) 2000 Microsoft Corporation
//
// Module Name:
// ConnPointEnum.h
//
// Description:
// Connection Point Enumerator implementation.
//
// Maintained By:
// Geoffrey Pease (GPease) 04-AUG-2000
//
//////////////////////////////////////////////////////////////////////////////
#pragma once
class CNotificationManager;
// Link list of connection points
typedef struct _SCPEntry {
struct _SCPEntry * pNext; // Next item in list
CLSID iid; // Interface ID
IUnknown * punk; // Punk to object
} SCPEntry;
// ConnPointEnum
class
CConnPointEnum:
public IEnumConnectionPoints
{
friend class CNotificationManager;
private:
// IUnknown
LONG m_cRef;
// IEnumConnectionPoints
SCPEntry * m_pCPList; // List of connection points
SCPEntry * m_pIter; // Iter - don't free
private: // Methods
CConnPointEnum( );
~CConnPointEnum();
STDMETHOD(Init)( );
HRESULT
HrCopy( CConnPointEnum * pECPIn );
HRESULT
HrAddConnection( REFIID riidIn, IUnknown * punkIn );
public: // Methods
static HRESULT
S_HrCreateInstance( IUnknown ** ppunkOut );
// IUnknown
STDMETHOD(QueryInterface)( REFIID riid, LPVOID *ppv );
STDMETHOD_(ULONG, AddRef)(void);
STDMETHOD_(ULONG, Release)(void);
// IEnumConnectionPoints
STDMETHOD( Next )( ULONG cConnections, LPCONNECTIONPOINT *ppCP, ULONG *pcFetched );
STDMETHOD( Skip )( ULONG cConnections );
STDMETHOD( Reset )( void );
STDMETHOD( Clone )( IEnumConnectionPoints **ppEnum );
}; // class CConnPointEnum