Eventing
호스트된 서비스는 이벤트 상태 변수가 있는 경우 IUPnPEventSource 인터페이스를 구현해야 합니다. 이 인터페이스에는 두 가지 메서드인 Advise 및 Unadvise가 있습니다. 이 인터페이스는 디바이스 호스트가 호스트된 서비스에서 생성된 이벤트 알림을 구독하는 메커니즘을 제공합니다. 한 번에 둘 이상의 이벤트 싱크가 등록되지 않습니다.
호스트된 서비스는 매개 변수로 전달된 IUPnPEventSink 인터페이스에 대한 참조를 보유하여 Advise 메서드를 구현해야 합니다. 인터페이스가 발견되면 Advise 메서드는 Unadvise 가 호출되거나 호스트된 서비스 개체가 제거될 때까지 해당 인터페이스에 대한 참조를 보유합니다. Advise 는 한 번만 호출됩니다.
구독을 제거하기 위해 디바이스 호스트는 Unadvise 를 호출하고 Advise라고 할 때 사용되는 개체 포인터를 전달합니다. 호스트된 서비스는 포인터가 Advise에 전달된 포인터와 동일한 경우 구독을 제거합니다.
상태 변수의 값이 변경되면 호스트된 서비스는 이벤트가 발생했음을 신호로 표시해야 합니다. 서비스는 IUPnPEventSink::OnStateChanged 메서드를 호출하여 이 작업을 수행합니다.
디바이스 호스트가 더 이상 호스트된 서비스에서 알림을 받을 필요가 없는 경우 IUPnPEventSource::Unadvise를 호출하여 Advise에서 받은 것과 동일한 개체 포인터를 전달합니다. 디바이스 호스트는 디바이스가 더 이상 네트워크에 있지 않을 때 이 메서드를 호출합니다.