如果托管服务具有事件状态变量,则托管服务必须实现 IUPnPEventSource 接口。 此接口有两种方法:建议 和 取消。 此接口为设备主机提供一种机制,用于订阅托管服务生成的事件通知。 一次注册的事件接收器不超过一个。
托管服务必须通过保存对作为参数传递的 IUPnPEventSink 接口的引用来实现 建议 方法。 如果找到该接口,则 建议 方法将保留对该接口的引用,直到调用 取消,或删除托管服务对象为止。 建议 只调用一次。
若要删除订阅,设备主机调用 取消,并在调用 建议时传入所使用的对象指针。 如果指针与传递给 建议的指针相同,则托管服务将删除订阅。
当状态变量的值发生更改时,托管服务必须指示已发生事件。 这些服务通过调用 IUPnPEventSink::OnStateChanged 方法来执行此作。
当设备主机不再需要从托管服务接收通知时,它将调用 IUPnPEventSource::Unadvise,并传入从 建议接收的相同对象指针。 当设备不再位于网络上时,设备主机将调用此方法。