68 lines
1.7 KiB
C
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
|
||
|
|