Обработка событий

Размещенная служба должна реализовать интерфейс IUPnPEventSource , если он имеет переменные состояния событий. Этот интерфейс имеет два метода: Совет и Отмена. Этот интерфейс предоставляет механизм подписки узла устройства на уведомления о событиях, созданные размещенной службой. Одновременно не будет зарегистрировано более одного приемника событий.

Размещенная служба должна реализовать метод Advise , удерживая ссылку на интерфейс IUPnPEventSink , который был передан в качестве параметра. Если интерфейс найден, метод Advise сохраняет ссылку на этот интерфейс до вызова Unadvise или до тех пор, пока не будет удален размещенный объект службы. Совет вызывается только один раз.

Чтобы удалить подписку, узел устройства вызывает unadvise и передает указатель объекта, используемый при вызове "Совет". Размещенная служба удаляет подписку, если указатель совпадает с указателем, переданным в Совет.

При изменении значения переменной состояния размещенная служба должна сигнализировать о том, что произошло событие. Для этого службы вызываются метод IUPnPEventSink::OnStateChanged .

Если узлу устройства больше не нужно получать уведомления от размещенной службы, он вызывает IUPnPEventSource::Unadvise, передавая тот же указатель объекта, который он получил от Совет. Узел устройства вызывает этот метод, когда устройство больше не будет находиться в сети.