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.