Verwenden von IConnectionPoint

Wenn der Client über einen Zeiger auf einen Verbindungspunkt verfügt, kann er die folgenden Vorgänge ausführen, wie durch IConnectionPointausgedrückt:

  • Zuerst ruft IConnectionPoint::GetConnectionInterface die iid der ausgehenden Schnittstelle ab, die vom Verbindungspunkt unterstützt wird. Bei Verwendung in Verbindung mit IEnumConnectionPointsermöglicht diese Methode dem Client, die IIDs aller ausgehenden Schnittstellen zu untersuchen, die für das verbindungsfähige Objekt unterstützt werden.
  • Zweitens kann ein Client über die IConnectionPoint::GetConnectionPointContainer-Methode vom Verbindungspunkt zurück zur IConnectionPointContainer-Schnittstelle des verbindungsfähigen Objekts navigieren.
  • Drittens sind die interessantesten Methoden für den Client IConnectionPoint::Advise und IConnectionPoint::Unadvise. Wenn ein Client sein eigenes Senkenobjekt mit dem verbindungsfähigen Objekt verbinden möchte, übergibt der Client den IUnknown-Zeiger der Senke (oder einen anderen Schnittstellenzeiger auf demselben Objekt) an Advise. Der Verbindungspunkt fragt die Senke nach der spezifischen ausgehenden Schnittstelle ab, die erwartet wird. Wenn diese Schnittstelle in der Senke verfügbar ist, speichert der Verbindungspunkt den Schnittstellenzeiger. Von diesem Punkt bis zum Aufruf von Unadvise führt das verbindungsfähige Objekt über diese Schnittstelle Aufrufe an die Senke aus, wenn Ereignisse auftreten. Um die Senke vom Verbindungspunkt zu trennen, übergibt der Client einen von Advise zurückgegebenen Schlüssel an die Unadvise-Methode. Unadvise muss Release für die Senkenschnittstelle aufrufen.
  • Schließlich kann ein Client einen Verbindungspunkt bitten, alle Verbindungen mit ihm aufzuzählen, die über IConnectionPoint::EnumConnectionsvorhanden sind. Diese Methode erstellt ein Enumeratorobjekt (mit einem separaten Verweiszähler), das einen IEnumConnections-Zeiger darauf zurückgibt. Der Client muss Release aufrufen, wenn der Enumerator nicht mehr benötigt wird. Darüber hinaus gibt der Enumerator eine Reihe von CONNECTDATA-Strukturen zurück, eine für jede Verbindung. Jede Struktur beschreibt eine Verbindung mithilfe des IUnknown-Zeigers der Senke sowie des Verbindungsschlüssels, der ursprünglich von Advisezurückgegeben wurde. Wenn diese Senkenschnittstellenzeiger verwendet werden, muss der Client Release für jeden Zeiger aufrufen, der in einer CONNECTDATA-Struktur zurückgegeben wird.

Verbindende Objektschnittstellen