Partilhar via


Registrando um dispositivo hospedado com o host do dispositivo

Registrar um dispositivo hospedado significa fornecer ao host do dispositivo a descrição do dispositivo e seu objeto de controle de dispositivo. Em seguida, o host do dispositivo constrói uma descrição completa do dispositivo UPnP, publica-o e anuncia o dispositivo na rede usando o protocolo de descoberta UPnP. Depois que um dispositivo é publicado, ele fica disponível para pontos de controle.

Os dispositivos são registrados de duas maneiras:

  • Um aplicativo cria uma instância do objeto de controle do dispositivo e passa um ponteiro para ele para o host do dispositivo.
  • O aplicativo passa o ProgID para um objeto de controle de dispositivo registrado para o host do dispositivo. O host do dispositivo cria uma instância quando o host do dispositivo recebe a primeira solicitação para o dispositivo.

Independentemente do método usado, o host do dispositivo publica e anuncia o dispositivo assim que ele é registrado. A diferença entre as duas abordagens tem a ver com quando o código do dispositivo é carregado. Quando o aplicativo passa um ponteiro para o objeto de controle do dispositivo, o código do dispositivo é carregado e executado no momento do registro. Quando o aplicativo passa um ProgID, o código do dispositivo só é carregado quando uma ação é invocada, uma propriedade é consultada ou uma solicitação de assinatura de evento chega. A segunda abordagem é um pouco mais eficiente. No entanto, não é adequado para dispositivos que devem estar em execução antes que qualquer solicitação de assinatura de controle ou evento chegue, pois, usando essa abordagem, os objetos de controle de dispositivo só são criados quando são necessários. Esse segundo método também pode criar problemas de desempenho quando recebe a primeira solicitação de um tipo de dispositivo.

Se você quiser garantir que um dispositivo seja anunciado pelo host do dispositivo na rede automaticamente quando o computador for iniciado, invoque IUPnPRegistrar::RegisterDevice. RegisterDevice garante que o código do dispositivo seja carregado somente quando uma solicitação de assinatura de evento ou controle for recebida.

Se os dispositivos forem transitórios ou conectados, invoque IUPnPRegistrar::RegisterRunningDevice e o dispositivo não será anunciado automaticamente quando o computador for reiniciado.

Tempo de vida do comunicado de descoberta

Cada dispositivo registrado com o host do dispositivo está associado a um tempo de vida, que é especificado pelo dispositivo após o registro. O tempo de vida do dispositivo é o período de tempo para o qual os anúncios de descoberta do dispositivo são válidos. O tempo de vida é passado para o ponto de controle como um cabeçalho no anúncio de descoberta inicial. O host do dispositivo atualiza automaticamente o anúncio antes do tempo de expiração. Os valores do tempo de vida do anúncio de descoberta devem ser de 15 minutos ou mais (o padrão é 30 minutos).

Identificadores de dispositivo criados no registro

Ao criar um modelo de descrição do dispositivo, o desenvolvedor do dispositivo deve fornecer o caminho do recurso para a descrição do serviço e os ícones associados. O caminho do recurso é determinado pelo aplicativo do dispositivo.

Como o mesmo dispositivo pode ser registrado várias vezes no mesmo computador, a UDN especificada no modelo de descrição do dispositivo não é suficiente para identificar exclusivamente um dispositivo. Portanto, quando um dispositivo é registrado, o host do dispositivo cria um identificador de dispositivo. Esse identificador de dispositivo, em associação com o UDN no modelo de descrição do dispositivo, pode ser usado para identificar exclusivamente um dispositivo.

Esse identificador também é usado quando o dispositivo é temporariamente cancelado e, em seguida, registrado novamente. Quando um dispositivo não é registrado temporariamente, o host do dispositivo não exclui o UDN. Os motivos para não excluir o UDN incluem:

  • O dispositivo está sendo atualizado.
  • Você está alterando as propriedades do dispositivo.
  • Um serviço está temporariamente indisponível.
  • Você está adicionando um novo serviço a um dispositivo.
  • Você está atualizando a DLL.
  • O dispositivo está no modo de espera.

Consulte as seções a seguir para obter mais informações sobre o registro: