Compartilhar via


Método IUPnPRegistrar::RegisterDevice (upnphost.h)

O método RegisterDevice registra um dispositivo com o host do dispositivo. As informações do dispositivo são armazenadas pelo host do dispositivo. Em seguida, o host do dispositivo retorna um identificador de dispositivo e publica e anuncia o dispositivo na rede.

Sintaxe

HRESULT RegisterDevice(
  [in]  BSTR bstrXMLDesc,
  [in]  BSTR bstrProgIDDeviceControlClass,
  [in]  BSTR bstrInitString,
  [in]  BSTR bstrContainerId,
  [in]  BSTR bstrResourcePath,
  [in]  long nLifeTime,
  [out] BSTR *pbstrDeviceIdentifier
);

Parâmetros

[in] bstrXMLDesc

Especifica o modelo de descrição do dispositivo XML do dispositivo a ser registrado.

[in] bstrProgIDDeviceControlClass

Especifica o ProgID de um objeto de controle de dispositivo que implementa a interface IUPnPDeviceControl . Essa interface deve ser um servidor COM em processo (CLSCTX_INPROC_SERVER) e deve estar acessível ao LocalService.

[in] bstrInitString

Identifica a cadeia de caracteres de inicialização específica para o dispositivo. Essa cadeia de caracteres é passada posteriormente para IUPnPDeviceControl::Initialize.

[in] bstrContainerId

Especifica uma cadeia de caracteres que identifica o grupo de processos ao qual o dispositivo pertence. Todos os dispositivos com a mesma ID de contêiner estão contidos no mesmo processo.

[in] bstrResourcePath

Especifica o local do diretório de recursos do dispositivo. Esse diretório de recursos contém os arquivos de ícone e descrições de serviço especificados no modelo de descrição do dispositivo bstrXMLDesc. O diretório de recursos também pode conter os arquivos de apresentação. No entanto, isso é opcional.

[in] nLifeTime

Especifica o tempo de vida do anúncio do dispositivo, em segundos. Depois que o tempo limite expirar, os comunicados serão atualizados. Se você especificar zero, o valor padrão de 1800 (30 minutos) será usado. O valor mínimo permitido é 900 (15 minutos); se você especificar algo menor que 900, um erro será retornado.

[out] pbstrDeviceIdentifier

Recebe o identificador do dispositivo. Use esse identificador ao cancelar o registro ou registrar novamente o dispositivo. Salve esta ID do dispositivo; você deve usá-lo ao chamar UnregisterDevice.

Retornar valor

Se o método for bem-sucedido, o valor retornado será S_OK. Caso contrário, o método retornará um dos códigos de erro COM definidos em WinError.h ou um dos seguintes códigos de erro específicos do UPnP.

Código de retorno Descrição
UPNP_E_DUPLICATE_SERVICE_ID
Existe uma ID de serviço duplicada para um serviço no mesmo dispositivo pai.
UPNP_E_INVALID_DESCRIPTION
A descrição do dispositivo não é válida.
UPNP_E_INVALID_ICON
Um erro está presente no elemento de ícone da descrição do dispositivo.
UPNP_E_INVALID_SERVICE
Um erro está presente em um elemento de serviço na descrição do dispositivo.
UPNP_E_REQUIRED_ELEMENT_ERROR
Um elemento necessário está ausente.

Comentários

Um dispositivo é instanciado e IUPnPDeviceControl::Initialize é invocado quando uma solicitação de controle ou evento é recebida.

Use o identificador retornado em pbstrDeviceIdentifier ao invocar UnregisterDevice ou IUPnPReregistrar::ReregisterDevice.

Os erros comuns que podem ocorrer ao invocar essa função incluem:

  • O objeto COM necessário não foi encontrado.
  • Não há acesso ao objeto COM para LocalService.
  • Interfaces COM subordinadas.
  • Os limites de descrição XML (consulte Criando uma descrição do dispositivo).
  • As variáveis evented não retornaram códigos de êxito e o dispositivo foi desligado.
  • A descrição do serviço era inválida. Use validatesd.exe para garantir que as descrições de serviço sejam válidas.
  • O serviço não implementou IUPnPEventSource e não retornou um código de êxito para IUPnPEventSource::Advise e o dispositivo foi desligado.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows XP [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Nenhum compatível
Plataforma de Destino Windows
Cabeçalho upnphost.h
DLL Upnphost.dll

Confira também

Iupnpregistrar

IUPnPRegistrar::UnregisterDevice

IUPnPReregistrar