Geräteanbieter
Geräteanbieter sind registrierte Objekte, die der Computer bei jedem Systemstart startet. Geräteanbieter registrieren und aufheben die Registrierung ausgeführter Geräte beim Gerätehost als Reaktion auf ein Ereignis. Bei diesen Geräten handelt es sich um Geräte, die beim Systemstart automatisch gestartet wurden. Aus Sicherheitsgründen sollte ein Geräteanbieter in der Regel als LocalServiceund nicht als LocalSystem ausgeführt werden.
Geräteanbieter können für vorübergehende Geräte verwendet werden. Geräteanbieter können auch verwendet werden, um Geräte mit abgefragten Medien zu überbrücken. Beispielsweise wird ein Peripheriegerät wie ein digitaler Musikplayer über einen seriellen Anschluss mit einem Computer verbunden. Um den Musikplayer als UPnP-basiertes Gerät verfügbar zu machen, sind ein Gerätesteuerungsobjekt und eine Reihe von Dienstobjekten erforderlich. Diese Objekte implementieren die UPnP-basierten Musikplayeraktionen als serielle Befehle. Der Musikplayer muss jedoch an den seriellen Anschluss angeschlossen und für die Steuerung verfügbar sein, bevor diese Objekte registriert werden.
Da der serielle Anschluss keinen expliziten Benachrichtigungsmechanismus bietet, wenn Geräte verbunden sind, ist ein Abrufcode erforderlich. Dieser Code kann in einem Geräteanbieterobjekt, einem Dienst oder in einer eigenständigen Anwendung implementiert werden. Wenn der Computer gestartet wird, instanziiert der Gerätehost das Geräteanbieterobjekt und ruft dann seine Startmethode auf. Wenn der Geräteanbieter das Vorhandensein eines Musikplayergeräts erkennt, instanziiert er das entsprechende Gerätesteuerungsobjekt und registriert es durch Aufrufen von IUPnPRegistrar::RegisterRunningDevice. Diese Methode veröffentlicht das Gerät und kündigt es im UPnP-basierten Netzwerk an.
Die gleiche Funktionalität kann auch erreicht werden, indem ein Dienst implementiert wird, der den seriellen Port abruft. Geräteanbieter vereinfachen die Dinge jedoch, da nur die Kernfunktionalität – der Abruf – implementiert werden muss, da Geräteanbieter darauf angewiesen sind, dass der Gerätehost sie startet und beendet. Die Verwendung von Geräteanbietern ist einfacher als die Implementierung eines Diensts.
Zur Registrierungszeit und bei jedem nachfolgenden Systemstart instanziiert der Computer das Geräteanbieterobjekt und ruft dann seine IUPnPDeviceProvider::Start-Methode auf, wobei die während der Registrierung angegebene Initialisierungszeichenfolge übergeben wird.
Nachdem die Start-Methode aufgerufen wurde, führt der Geräteanbieter alle erforderlichen Verarbeitungen durch. Bei Bedarf registriert der Geräteanbieter Geräte durch Aufrufen von IUPnPRegistrar::RegisterRunningDevice,wie im Abschnitt Registrieren eines gehosteten Geräts beim Gerätehostbeschrieben.
Wenn der Computer heruntergefahren wird, ruft der Gerätehost die IUPnPDeviceProvider::Stop-Methode auf, um anzugeben, dass der Geräteanbieter seine Vorgänge beendet.