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