Поделиться через


Функция WSDCreateDeviceHostAdvanced (wsdhost.h)

Создает узел устройства и возвращает указатель на интерфейс IWSDDeviceHost .

Синтаксис

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

Параметры

[in] pszLocalId

Логический или физический адрес устройства. Логический адрес имеет вид urn:uuid:{guid}. Если pszLocalId является логическим адресом, узел объявит логический адрес, а затем преобразует его в физический при получении сообщений Resolve или Probe.

Если pszLocalId является физическим адресом (например, URL-адрес с префиксом http или https), узел будет использовать адрес в качестве физического адреса и будет размещаться на этом адресе вместо адреса по умолчанию.

Для безопасного взаимодействия pszLocalId должен быть URL-адресом с префиксом https, а узел будет использовать протокол SSL/TLS на порте, указанном в URL-адресе. Рекомендуемый порт — порт 5358, так как он зарезервирован для безопасных подключений с помощью WSDAPI. Если порт не указан, узел будет использовать порт 443. Порт узла должен быть настроен с помощью SSL-сертификата сервера перед вызовом WSDCreateDeviceHostAdvanced. Дополнительные сведения о конфигурации портов узлов см. в разделе HttpSetServiceConfiguration.

Если pszLocalId или транспортный адрес, на который ссылается ppHostAddresses , является URL-адресом с префиксом https, то оба URL-адреса должны быть идентичными. Если это не так, WSDCreateDeviceHostAdvanced вернет E_INVALIDARG.

Любой URL-адрес (HTTP или HTTPS) должен заканчиваться косой чертой. URL-адрес должен содержать допустимый IP-адрес или имя узла.

В следующем списке показаны некоторые примеры значений для pszLocalId. Это не полный список допустимых значений.

  • 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

Интерфейс IWSDXMLContext , определяющий пользовательские типы сообщений или пространства имен.

Если значение РАВНО NULL, используется контекст по умолчанию, представляющий встроенные типы сообщений и пространства имен.

[in] ppHostAddresses

Один интерфейс IWSDAddress или интерфейс IWSDTransportAddress . Объекты предоставляют сведения о конкретных адресах, которые должен прослушивать узел.

Если pszLocalId содержит логический адрес, результирующее поведение представляет собой сопоставление между логическим адресом и определенным набором физических адресов (вместо сопоставления между логическим адресом и физическим адресом по умолчанию).

[in] dwHostAddressCount

Количество элементов в массиве ppHostAddresses . Если ppHostAddresses является интерфейсом IWSDAddress , число должно быть равно 1.

[out] ppDeviceHost

Указатель на интерфейс IWSDDeviceHost , который используется для предоставления семантики устройства WSD, связанной с сервером, который отвечает на входящие запросы.

Возвращаемое значение

Возможные возвращаемые значения включают, помимо прочего, следующие:

Код возврата Описание
S_OK
Метод успешно завершен.
E_INVALIDARG
pszLocalId имеет значение NULL, длина в символах pszLocalId превышает WSD_MAX_TEXT_LENGTH (8192), или pszLocalId указывает на URL-адрес с префиксом https, и этот URL-адрес не соответствует URL-адресу транспорта, на который ссылается ppHostAddresses.
E_POINTER
ppDeviceHost имеет значение NULL.
E_OUTOFMEMORY
Недостаточно памяти для завершения операции.

Комментарии

Функция WSDCreateDeviceHostAdvanced вызывает метод IWSDDeviceHost::Init , который инициализирует экземпляр объекта IWSDDeviceHost .

Требования

Требование Значение
Минимальная версия клиента Windows Vista [только классические приложения]
Минимальная версия сервера Windows Server 2008 [только классические приложения]
Целевая платформа Windows
Header wsdhost.h (включая Wsdapi.h)
Библиотека Wsdapi.lib
DLL Wsdapi.dll

См. также раздел

WSDCreateDeviceHost