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

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

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

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

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

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