Provedores de dispositivo
Os provedores de dispositivos são objetos registrados que o computador inicia em cada inicialização do sistema. Os provedores de dispositivos registram e cancelam o registro de dispositivos em execução com o host do dispositivo em resposta a algum evento. Esses dispositivos são dispositivos que foram iniciados automaticamente no momento da inicialização do sistema. Por motivos de segurança, um provedor de dispositivos geralmente deve ser executado como LocalService, em vez de LocalSystem.
Os provedores de dispositivos podem ser usados para dispositivos transitórios. Os provedores de dispositivos também podem ser usados para conectar dispositivos à mídia sondada. Por exemplo, um dispositivo periférico, como um player de música digital, está conectado a um computador por meio de uma porta serial. Para expor o player de música como um dispositivo baseado em UPnP, um objeto de controle de dispositivo e um conjunto de objetos de serviço são necessários. Esses objetos implementam as ações do player de música baseadas em UPnP como comandos serial. No entanto, o player de música deve estar conectado à porta serial e disponível para controle antes que esses objetos sejam registrados.
Como a porta serial não oferece um mecanismo de notificação explícito quando os dispositivos estão conectados, o código de sondagem é necessário. Esse código pode ser implementado em um objeto de provedor de dispositivo, um serviço ou em um aplicativo autônomo. Quando o computador é iniciado, o host do dispositivo cria uma instância do objeto do provedor de dispositivos e, em seguida, invoca seu método Start . Quando o provedor de dispositivo detecta a presença de um dispositivo de player de música, ele cria uma instância do objeto de controle de dispositivo apropriado e o registra chamando IUPnPRegistrar::RegisterRunningDevice. Esse método publica o dispositivo e o anuncia na rede baseada em UPnP.
A mesma funcionalidade também pode ser obtida implementando um serviço que sonda a porta serial. No entanto, os provedores de dispositivo simplificam as coisas exigindo que apenas a funcionalidade principal — a sondagem — seja implementada porque os provedores de dispositivo dependem do host do dispositivo para iniciá-los e pará-los. Usar provedores de dispositivos é mais simples do que implementar um serviço.
No momento do registro e em cada inicialização do sistema subsequente, o computador instancia o objeto do provedor de dispositivos e, em seguida, invoca seu método IUPnPDeviceProvider::Start , passando-lhe a cadeia de caracteres de inicialização especificada durante o registro.
Depois que o método Iniciar é chamado, o provedor de dispositivos executa qualquer processamento necessário e, quando necessário, o provedor de dispositivo registra dispositivos chamando IUPnPRegistrar::RegisterRunningDevice, conforme descrito na seção Registrando um dispositivo hospedado com o Host do Dispositivo.
Quando o computador é desligado, o host do dispositivo invoca o método IUPnPDeviceProvider::Stop para indicar que o provedor de dispositivo encerra suas operações.