IWSDDeviceHost::Init 方法 (wsdhost.h)

初始化 IWSDDeviceHost 对象的实例,该对象是设备的主机端表示形式。

语法

HRESULT Init(
  [in]           LPCWSTR        pszLocalId,
  [in, optional] IWSDXMLContext *pContext,
  [in, optional] IWSDAddress    **ppHostAddresses,
  [in, optional] DWORD          dwHostAddressCount
);

参数

[in] pszLocalId

设备的逻辑或物理地址。 逻辑地址的格式 urn:uuid:{guid}为 。 如果 pszLocalId 是逻辑地址,主机将报出逻辑地址,然后在收到 Resolve 或 Probe 消息时将该地址转换为物理地址。

如果 pszLocalId 是物理地址 ((如以 http 或 https) 为前缀的 URL),则主机将使用该地址作为物理地址,并将托管在该地址而不是默认地址上。

为了安全通信, pszLocalId 必须是以 https 为前缀的 URL,主机将在 URL 中指定的端口上使用 SSL/TLS 协议。 建议的端口是端口 5358,因为此端口是为使用 WSDAPI 进行安全连接而保留的。 如果未指定端口,则主机将使用端口 443。 必须使用 SSL 服务器证书配置主机端口。 有关主机端口配置的详细信息,请参阅 HttpSetServiceConfiguration

(http 或 https) 的任何 URL 都必须用尾部斜杠终止。 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, optional] pContext

定义自定义消息类型或命名空间的 IWSDXMLContext 接口。

[in, optional] ppHostAddresses

单个 IWSDAddress 对象或 IWSDTransportAddress 对象。 对象提供有关主机应侦听的特定地址的信息。

如果 pszLocalId 包含本地地址,则生成的行为是逻辑地址与提供的物理地址之间的映射 (,而不是逻辑地址与默认物理地址之间的映射) 。

[in, optional] dwHostAddressCount

ppHostAddresses 数组中的项数。 如果 ppHostAddressesIWSDAddress 接口,则 count 必须为 1。

返回值

可能的返回值包括但不限于以下值:

返回代码 说明
S_OK
方法已成功完成。
E_INVALIDARG
pszLocalIdNULL,pszLocalId 的长度(以字符为单位)超过 WSD_MAX_TEXT_LENGTH (8192) ,或者 ppHostAddresses 引用的地址数与 dwHostAddressCount 不匹配。
E_FAIL
设备主机处于意外状态。
E_OUTOFMEMORY
内存不足,无法完成操作。
E_ABORT
无法完成初始化。

注解

此方法由 WSDCreateDeviceHost 调用,通常不需要由代码直接调用。

要求

要求
最低受支持的客户端 Windows Vista [仅限桌面应用]
最低受支持的服务器 Windows Server 2008 [仅限桌面应用]
目标平台 Windows
标头 wsdhost.h (包括 Wsdapi.h)
DLL Wsdapi.dll

另请参阅

IWSDDeviceHost