Compartilhar via


Função WSDCreateDeviceHostAdvanced (wsdhost.h)

Cria um host de dispositivo e retorna um ponteiro para a interface IWSDDeviceHost .

Sintaxe

HRESULT WSDCreateDeviceHostAdvanced(
  [in]  LPCWSTR        pszLocalId,
  [in]  IWSDXMLContext *pContext,
  [in]  IWSDAddress    **ppHostAddresses,
  [in]  DWORD          dwHostAddressCount,
  [out] IWSDDeviceHost **ppDeviceHost
);

Parâmetros

[in] pszLocalId

O endereço lógico ou físico do dispositivo. Um endereço lógico é do formulário urn:uuid:{guid}. Se pszLocalId for um endereço lógico, o host anunciará o endereço lógico e converterá o endereço em um endereço físico quando receber mensagens Resolver ou Sondar.

Se pszLocalId for um endereço físico (como URL prefixada por http ou https), o host usará o endereço como o endereço físico e será hospedado nesse endereço em vez do padrão.

Para comunicação segura, pszLocalId deve ser uma URL prefixada por https e o host usará o protocolo SSL/TLS na porta especificada na URL. A porta recomendada é a porta 5358, pois essa porta é reservada para conexões seguras com o WSDAPI. Se nenhuma porta for especificada, o host usará a porta 443. A porta host deve ser configurada com um certificado de servidor SSL antes de chamar WSDCreateDeviceHostAdvanced. Para obter mais informações sobre a configuração de portas de host, consulte HttpSetServiceConfiguration.

Se pszLocalId ou o endereço de transporte referenciado por ppHostAddresses for uma URL prefixada por https, ambas as URLs deverão ser idênticas. Se esse não for o caso, WSDCreateDeviceHostAdvanced retornará E_INVALIDARG.

Qualquer URL (http ou https) deve ser encerrada com uma barra à direita. A URL deve conter um endereço IP ou nome do host válido.

A lista a seguir mostra alguns valores de exemplo para pszLocalId. Não é uma lista completa de valores válidos.

  • http://192.168.0.1:5357/
  • http://localhost/
  • http://myHostname:5357/
  • https://192.168.0.1:5358/
  • https://myHostname/
  • https://myHostname/myDevice/
  • https://myHostname:5358/

[in] pContext

Uma interface IWSDXMLContext que define tipos de mensagem ou namespaces personalizados.

Se NULL, um contexto padrão que representa os tipos de mensagens internos e namespaces será usado.

[in] ppHostAddresses

Uma única interface IWSDAddress ou interface IWSDTransportAddress . Os objetos fornecem informações sobre endereços específicos nos quais o host deve escutar.

Se pszLocalId contiver um endereço lógico, o comportamento resultante será um mapeamento entre o endereço lógico e um conjunto específico de endereços físicos (em vez de um mapeamento entre o endereço lógico e um endereço físico padrão).

[in] dwHostAddressCount

O número de itens na matriz ppHostAddresses . Se ppHostAddresses for uma interface IWSDAddress , count deverá ser 1.

[out] ppDeviceHost

Ponteiro para a interface IWSDDeviceHost que você usa para expor a semântica de dispositivo específica do WSD associada a um servidor que responde a solicitações de entrada.

Retornar valor

Os possíveis valores retornados incluem, mas não se limitam a, o seguinte:

Código de retorno Descrição
S_OK
Método concluído com êxito.
E_INVALIDARG
pszLocalId é NULL, o comprimento em caracteres de pszLocalId excede WSD_MAX_TEXT_LENGTH (8192) ou pszLocalId aponta para uma URL prefixada por https e essa URL não corresponde à URL do endereço de transporte referenciado por ppHostAddresses.
E_POINTER
ppDeviceHost é NULL.
E_OUTOFMEMORY
Memória insuficiente para concluir a operação.

Comentários

A função WSDCreateDeviceHostAdvanced chama o método IWSDDeviceHost::Init , que inicializa uma instância de um objeto IWSDDeviceHost .

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows Vista [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2008 [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho wsdhost.h (inclua Wsdapi.h)
Biblioteca Wsdapi.lib
DLL Wsdapi.dll

Confira também

WSDCreateDeviceHost