다음을 통해 공유


IConnectionPoint 사용

클라이언트에 연결 지점에 대한 포인터가 있는 경우 IConnectionPoint를 통해 표현된 대로 다음 작업을 수행할 수 있습니다.

  • 먼저 IConnectionPoint::GetConnectionInterface 는 연결 지점에서 지원하는 나가는 인터페이스 IID를 검색합니다. IEnumConnectionPoints와 함께 사용하는 경우 이 메서드를 사용하면 클라이언트가 연결 가능한 개체에서 지원되는 모든 나가는 인터페이스의 IID를 검사할 수 있습니다.
  • 둘째, 클라이언트는 연결 지점에서 IConnectionPoint::GetConnectionPointContainer 메서드를 통해 연결 가능한 개체의 IConnectionPointContainer 인터페이스로 다시 이동할 수 있습니다.
  • 셋째, 클라이언트의 가장 흥미로운 방법은 IConnectionPoint::AdviseIConnectionPoint::Unadvise입니다. 클라이언트가 자체 싱크 개체를 연결 가능한 개체에 연결하려는 경우 클라이언트는 싱크의 IUnknown 포인터(또는 동일한 개체의 다른 인터페이스 포인터)를 Advise에 전달합니다. 연결점은 예상되는 특정 나가는 인터페이스에 대해 싱크를 쿼리합니다. 싱크에서 해당 인터페이스를 사용할 수 있는 경우 연결점은 인터페이스 포인터를 저장합니다. 이 시점부터 Unadvise 가 호출될 때까지 연결 가능한 개체는 이벤트가 발생할 때 이 인터페이스를 통해 싱크를 호출합니다. 연결점에서 싱크의 연결을 끊기 위해 클라이언트는 Advise 에서 반환된 키를 Unadvise 메서드로 전달합니다. Unadvise는 싱크 인터페이스에서 Release 를 호출해야 합니다.
  • 마지막으로 클라이언트는 연결 지점에 IConnectionPoint::EnumConnections를 통해 존재하는 모든 연결을 열거하도록 요청할 수 있습니다. 이 메서드는 IEnumConnections 포인터를 반환하는 열거자 개체(별도의 참조 횟수 포함)를 만듭니다. 열거자가 더 이상 필요하지 않은 경우 클라이언트는 Release 를 호출해야 합니다. 또한 열거자는 각 연결에 대해 하나씩 일련의 CONNECTDATA 구조를 반환합니다. 각 구조체는 싱크의 IUnknown 포인터와 Advise에서 원래 반환된 연결 키를 사용하여 하나의 연결을 설명합니다. 이러한 싱크 인터페이스 포인터로 완료되면 클라이언트는 CONNECTDATA 구조로 반환된 각 포인터에서 Release를 호출해야 합니다.

연결 가능한 개체 인터페이스