イベント

ホステッド サービスは、イベント状態変数がある場合、 IUPnPEventSource インターフェイスを実装する必要があります。 このインターフェイスには、 AdviseUnadvise の 2 つのメソッドがあります。 このインターフェイスは、ホストされたサービスによって生成されたイベント通知をデバイス ホストがサブスクライブするためのメカニズムを提供します。 一度に登録されるイベント シンクは 1 つ以上ありません。

ホステッド サービスでは、パラメーターとして渡された IUPnPEventSink インターフェイスへの参照を保持して、Advise メソッドを実装する必要があります。 インターフェイスが見つかった場合、 Advise メソッドは 、Unadvise が呼び出されるまで、またはホステッド サービス オブジェクトが削除されるまで、そのインターフェイスへの参照を保持します。 Advise は 1 回だけ呼び出されます。

サブスクリプションを削除するために、デバイス ホストは Unadvise を呼び出し、 Advise を呼び出したときに使用されるオブジェクト ポインターを渡します。 ポインターが Advise に渡されたものと同じである場合、ホステッド サービスはサブスクリプションを削除します。

状態変数の値が変更されると、ホステッド サービスはイベントが発生したことを通知する必要があります。 サービスは、 IUPnPEventSink::OnStateChanged メソッドを呼び出すことによってこれを行います。

デバイス ホストは、ホストされたサービスから通知を受信する必要がなくなった場合、 IUPnPEventSource::Unadvise を呼び出し、 Advise から受信したのと同じオブジェクト ポインターを渡します。 デバイス ホストは、デバイスがネットワーク上に存在しなくなったときに、このメソッドを呼び出します。