次の方法で共有


IConnectionPoint の使用

クライアントが接続ポイントへのポインターを持っている場合、 IConnectionPoint で表される次の操作を実行できます。

  • まず、 IConnectionPoint::GetConnectionInterface は、接続ポイントでサポートされている発信インターフェイス IID を取得します。 このメソッドを IEnumConnectionPoints と組み合わせて使用すると、クライアントは接続可能なオブジェクトでサポートされているすべての発信インターフェイスの IID を調べることができます。
  • 2 つ目に、クライアントは、接続ポイントから IConnectionPoint::GetConnectionPointContainer メソッドを使用して、接続可能なオブジェクトの IConnectionPointContainer インターフェイスに戻ることができます。
  • 3 番目に、クライアントの最も興味深い方法は、 IConnectionPoint::AdviseIConnectionPoint::Unadvise です。 クライアントが自身のシンク オブジェクトを接続可能なオブジェクトに接続したい場合、クライアントはシンクの IUnknown ポインタ (または同じオブジェクト上の他のインターフェイス ポインタ) を Advise に渡します。 接続ポイントは、予期される特定の送信インターフェイスについてシンクに対してクエリを実行します。 そのインターフェイスがシンクで使用可能な場合、接続ポイントはインターフェイス ポインターを格納します。 この時点から Unadvise が呼び出されるまで、接続可能なオブジェクトは、イベントが発生したときに、このインターフェイスを介してシンクを呼び出します。 接続ポイントからシンクを切断するために、クライアントは、 Advise から返されたキーを Unadvise メソッドに渡します。 Unadvise はシンク インターフェイスで Release を呼び出す必要があります。
  • 最後に、クライアントは、接続ポイントに IConnectionPoint::EnumConnections を介して存在するすべての接続を列挙するように要求できます。 このメソッドは、 IEnumConnections ポインターを返す列挙子オブジェクト (個別の参照カウントを持つ) を作成します。 列挙子が不要になったら、クライアントは Release を呼び出す必要があります。 さらに、列挙子は接続ごとに 1 つずつ、一連の CONNECTDATA 構造体を返します。 各構造体は、シンクの IUnknown ポインターと、最初に Adviseから返された接続キーを使用して 1 つの接続を記述します。 これらのシンク インターフェイス ポインターを使用した場合、クライアントは CONNECTDATA 構造体で返される各ポインターに対して Release を呼び出す必要があります。

接続可能なオブジェクトインターフェイス