Ereigniserstellung
Ein gehosteter Dienst muss die IUPnPEventSource Schnittstelle implementieren, wenn er Ereigniszustandsvariablen aufweist. Diese Schnittstelle verfügt über zwei Methoden: Advise und Unadvise. Diese Schnittstelle stellt einen Mechanismus für den Gerätehost bereit, um Ereignisbenachrichtigungen zu abonnieren, die vom gehosteten Dienst generiert werden. Es werden jeweils nicht mehr als eine Ereignissenke registriert.
Ein gehosteter Dienst muss die Advise-Methode implementieren, indem ein Verweis auf die IUPnPEventSink- Schnittstelle gehalten wird, die als Parameter übergeben wurde. Wenn die Schnittstelle gefunden wird, enthält die Advise-Methode einen Verweis auf diese Schnittstelle, bis unadvise aufgerufen wird, oder bis das gehostete Dienstobjekt entfernt wird. wird nur einmal aufgerufen.
Um das Abonnement zu entfernen, ruft der Gerätehost Unadvise- auf und übergibt den Objektzeiger, der beim Aufruf Adviseverwendet wird. Der gehostete Dienst entfernt das Abonnement, wenn der Zeiger mit dem zeiger identisch ist, der an Adviseübergeben wurde.
Wenn sich der Wert einer Zustandsvariable ändert, muss der gehostete Dienst signalisieren, dass ein Ereignis aufgetreten ist. Dies geschieht durch Aufrufen der IUPnPEventSink::OnStateChanged-Methode.
Wenn der Gerätehost keine Benachrichtigungen vom gehosteten Dienst mehr empfangen muss, wird IUPnPEventSource::Unadviseaufgerufen, wobei derselbe Objektzeiger übergeben wird, der von Adviseempfangen wurde. Der Gerätehost ruft diese Methode auf, wenn sich das Gerät nicht mehr im Netzwerk befindet.