Condividi tramite


Funzione WSDCreateDeviceHostAdvanced (wsdhost.h)

Crea un host del dispositivo e restituisce un puntatore all'interfaccia IWSDDeviceHost .

Sintassi

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

Parametri

[in] pszLocalId

Indirizzo logico o fisico del dispositivo. Un indirizzo logico è nel formato urn:uuid:{guid}. Se pszLocalId è un indirizzo logico, l'host annuncia l'indirizzo logico e quindi converte l'indirizzo in un indirizzo fisico quando riceve i messaggi Resolve o Probe.

Se pszLocalId è un indirizzo fisico (ad esempio, l'URL preceduto da http o https), l'host userà l'indirizzo come indirizzo fisico e ospiterà in tale indirizzo anziché quello predefinito.

Per la comunicazione sicura, pszLocalId deve essere un URL preceduto da https e l'host userà il protocollo SSL/TLS sulla porta specificata nell'URL. La porta consigliata è la porta 5358, perché questa porta è riservata alle connessioni sicure con WSDAPI. Se non viene specificata alcuna porta, l'host userà la porta 443. La porta host deve essere configurata con un certificato server SSL prima di chiamare WSDCreateDeviceHostAdvanced. Per altre informazioni sulla configurazione delle porte host, vedere HttpSetServiceConfiguration.

Se pszLocalId o l'indirizzo di trasporto a cui fa riferimento ppHostAddresses è un URL preceduto da https, entrambi gli URL devono essere identici. In caso contrario, WSDCreateDeviceHostAdvanced restituirà E_INVALIDARG.

Qualsiasi URL (http o https) deve essere terminato con una barra finale. L'URL deve contenere un indirizzo IP o un nome host valido.

L'elenco seguente mostra alcuni valori di esempio per pszLocalId. Non è un elenco completo di valori validi.

  • 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

Interfaccia IWSDXMLContext che definisce tipi di messaggi o spazi dei nomi personalizzati.

Se NULL, viene utilizzato un contesto predefinito che rappresenta i tipi di messaggio e gli spazi dei nomi predefiniti.

[in] ppHostAddresses

Singola interfaccia IWSDAddress o interfaccia IWSDTransportAddress . Gli oggetti forniscono informazioni su indirizzi specifici su cui l'host deve essere in ascolto.

Se pszLocalId contiene un indirizzo logico, il comportamento risultante è un mapping tra l'indirizzo logico e un set specifico di indirizzi fisici (anziché un mapping tra l'indirizzo logico e un indirizzo fisico predefinito).

[in] dwHostAddressCount

Numero di elementi nella matrice ppHostAddresses . Se ppHostAddresses è un'interfaccia IWSDAddress , count deve essere 1.

[out] ppDeviceHost

Puntatore all'interfaccia IWSDDeviceHost usata per esporre la semantica del dispositivo specifica WSD associata a un server che risponde alle richieste in ingresso.

Valore restituito

I valori restituiti possibili includono, ma non sono limitati ai seguenti:

Codice restituito Descrizione
S_OK
Il metodo è stato completato correttamente.
E_INVALIDARG
pszLocalId è NULL, la lunghezza in caratteri di pszLocalId supera WSD_MAX_TEXT_LENGTH (8192) o pszLocalId punta a un URL preceduto da https e tale URL non corrisponde all'URL dell'indirizzo di trasporto a cui fa riferimento ppHostAddresses.
E_POINTER
ppDeviceHost è NULL.
E_OUTOFMEMORY
Memoria insufficiente per completare l'operazione.

Commenti

La funzione WSDCreateDeviceHostAdvanced chiama il metodo IWSDDeviceHost::Init , che inizializza un'istanza di un oggetto IWSDDeviceHost .

Requisiti

Requisito Valore
Client minimo supportato Windows Vista [solo app desktop]
Server minimo supportato Windows Server 2008 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione wsdhost.h (include Wsdapi.h)
Libreria Wsdapi.lib
DLL Wsdapi.dll

Vedi anche

WSDCreateDeviceHost