Geräteanbieter
Geräteanbieter sind registrierte Objekte, die der Computer bei jedem Systemstart startet. Geräteanbieter registrieren und heben die Registrierung ausgeführter Geräte beim Gerätehost als Reaktion auf ein Ereignis auf. Bei diesen Geräten handelt es sich um Geräte, die zum Startzeitpunkt des Systems automatisch gestartet wurden. Aus Sicherheitsgründen sollte ein Geräteanbieter im Allgemeinen als LocalService und 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 ist ein Peripheriegerät, z. B. 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 Port angeschlossen sein und zur Steuerung verfügbar sein, bevor diese Objekte registriert werden.
Da der serielle Port keinen expliziten Benachrichtigungsmechanismus bietet, wenn Geräte verbunden sind, ist Abfragecode 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 dessen Start-Methode 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 gibt es an das UPnP-basierte Netzwerk an.
Die gleiche Funktionalität kann auch durch die Implementierung eines Diensts erreicht werden, der den seriellen Port abruft. Geräteanbieter vereinfachen die Dinge jedoch, indem nur die Kernfunktionalität – die Abfrage – implementiert werden muss, da Geräteanbieter sich auf den Gerätehost verlassen, um sie zu starten und zu beenden. Die Verwendung von Geräteanbietern ist einfacher als die Implementierung eines Diensts.
Bei der Registrierung 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, und bei Bedarf registriert der Geräteanbieter Geräte, indem er IUPnPRegistrar::RegisterRunningDevice aufruft, wie im Abschnitt Registrieren eines gehosteten Geräts beim Gerätehost beschrieben.
Wenn der Computer heruntergefahren wird, ruft der Gerätehost die IUPnPDeviceProvider::Stop-Methode auf, um anzugeben, dass der Geräteanbieter seine Vorgänge beendet.