The IConnectionPoint Interface
The ability to connect to a single outgoing interface (that is, for a unique IID) is provided by a connection point sub-object that is conceptually owned by the connectable object. The object is separate to avoid circular reference counting problems. Through this interface the connection point allows callers to connect a sink to the connectable object, to disconnect a sink, or to enumerate the existing connections.
IDL:
[
uuid(B196B286-BAB4-101A-B69C-00AA00341D07)
, object, pointer_default(unique)
]
interface IConnectionPoint : IUnknown
{
HRESULT GetConnectionInterface([out] IID *pIID);
HRESULT GetConnectionPointContainer([out] IConnectionPointContainer **ppCPC);
HRESULT Advise([in] IUnknown *pUnk, [out] DWORD *pdwCookie);
HRESULT Unadvise([in] DWORD dwCookie);
HRESULT EnumConnections([out] IEnumConnections **ppEnum);
}
A connection point is allowed to stipulate how many connections (one or more) it will allow in its implementation of Advise. A connection point that allows only one interface can return E_NOTIMPL from EnumConnections.