WSDCreateDeviceHostAdvanced-Funktion (wsdhost.h)

Erstellt einen Gerätehost und gibt einen Zeiger auf die IWSDDeviceHost-Schnittstelle zurück.

Syntax

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

Parameter

[in] pszLocalId

Die logische oder physische Adresse des Geräts. Eine logische Adresse hat das Format urn:uuid:{guid}. Wenn pszLocalId eine logische Adresse ist, gibt der Host die logische Adresse an und konvertiert die Adresse dann in eine physische Adresse, wenn er Resolve- oder Testnachrichten empfängt.

Wenn pszLocalId eine physische Adresse ist (z. B. url mit dem Präfix http oder https), verwendet der Host die Adresse als physische Adresse und hostet diese Adresse anstelle der Standardadresse.

Für eine sichere Kommunikation muss pszLocalId eine URL mit dem Präfix https sein, und der Host verwendet das SSL/TLS-Protokoll an dem in der URL angegebenen Port. Der empfohlene Port ist Port 5358, da dieser Port für sichere Verbindungen mit WSDAPI reserviert ist. Wenn kein Port angegeben ist, verwendet der Host Port 443. Der Hostport muss mit einem SSL-Serverzertifikat konfiguriert werden, bevor WSDCreateDeviceHostAdvanced aufgerufen wird. Weitere Informationen zur Konfiguration von Hostports finden Sie unter HttpSetServiceConfiguration.

Wenn entweder pszLocalId oder die Transportadresse, auf die von ppHostAddresses verwiesen wird, eine URL mit dem Präfix https ist, müssen beide URLs identisch sein. Ist dies nicht der Fall, gibt WSDCreateDeviceHostAdvanced E_INVALIDARG zurück.

Jede URL (http oder https) muss mit einem nachfolgenden Schrägstrich beendet werden. Die URL muss eine gültige IP-Adresse oder einen gültigen Hostnamen enthalten.

Die folgende Liste zeigt einige Beispielwerte für pszLocalId. Es handelt sich nicht um eine vollständige Liste gültiger Werte.

  • 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

Eine IWSDXMLContext-Schnittstelle , die benutzerdefinierte Nachrichtentypen oder Namespaces definiert.

Bei NULL wird ein Standardkontext verwendet, der die integrierten Nachrichtentypen und Namespaces darstellt.

[in] ppHostAddresses

Eine einzelne IWSDAddress-Schnittstelle oder IWSDTransportAddress-Schnittstelle . Die -Objekte bieten Informationen zu bestimmten Adressen, an denen der Host lauschen soll.

Wenn pszLocalId eine logische Adresse enthält, ist das resultierende Verhalten eine Zuordnung zwischen der logischen Adresse und einem bestimmten Satz physischer Adressen (anstelle einer Zuordnung zwischen der logischen Adresse und einer physischen Standardadresse).

[in] dwHostAddressCount

Die Anzahl der Elemente im Array ppHostAddresses . Wenn ppHostAddresses eine IWSDAddress-Schnittstelle ist, muss die Anzahl 1 sein.

[out] ppDeviceHost

Zeiger auf die IWSDDeviceHost-Schnittstelle , die Sie verwenden, um die WSD-spezifische Gerätesemantik verfügbar zu machen, die einem Server zugeordnet ist, der auf eingehende Anforderungen antwortet.

Rückgabewert

Mögliche Rückgabewerte sind unter anderem folgendes:

Rückgabecode BESCHREIBUNG
S_OK
Die Methode wurde erfolgreich abgeschlossen.
E_INVALIDARG
pszLocalId ist NULL, die Länge in Zeichen von pszLocalId überschreitet WSD_MAX_TEXT_LENGTH (8192), oder pszLocalId verweist auf eine URL mit dem Präfix https, und diese URL stimmt nicht mit der URL der Transportadresse überein, auf die von ppHostAddresses verwiesen wird.
E_POINTER
ppDeviceHost ist NULL.
E_OUTOFMEMORY
Unzureichender Arbeitsspeicher, um den Vorgang abzuschließen.

Hinweise

Die WSDCreateDeviceHostAdvanced-Funktion ruft die IWSDDeviceHost::Init-Methode auf, die eine instance eines IWSDDeviceHost-Objekts initialisiert.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows Vista [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2008 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile wsdhost.h (include Wsdapi.h)
Bibliothek Wsdapi.lib
DLL Wsdapi.dll

Weitere Informationen

WSDCreateDeviceHost