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 必须是以 https 为前缀的 URL,并且主机将在 URL 中指定的端口上使用 SSL/TLS 协议。 建议的端口为端口 5358,因为此端口是为使用 WSDAPI 进行安全连接而保留的。 如果未指定端口,则主机将使用端口 443。 在调用 WSDCreateDeviceHostAdvanced 之前,必须使用 SSL 服务器证书配置主机端口。 有关主机端口配置的详细信息,请参阅 HttpSetServiceConfiguration。
如果 pszLocalId 或 ppHostAddresses 引用的传输地址是前缀为 https 的 URL,则两个 URL 必须相同。 如果不是这种情况, WSDCreateDeviceHostAdvanced 将返回E_INVALIDARG。
任何 (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] pContext
定义自定义消息类型或命名空间的 IWSDXMLContext 接口。
如果 为 NULL,则使用表示内置消息类型和命名空间的默认上下文。
[in] ppHostAddresses
单个 IWSDAddress 接口或 IWSDTransportAddress 接口。 对象提供有关主机应侦听的特定地址的信息。
如果 pszLocalId 包含逻辑地址,则生成的行为是逻辑地址与一组特定物理地址 (之间的映射,而不是逻辑地址与默认物理地址之间的映射) 。
[in] dwHostAddressCount
ppHostAddresses 数组中的项数。 如果 ppHostAddresses 是 IWSDAddress 接口,则 count 必须为 1。
[out] ppDeviceHost
指向 IWSDDeviceHost 接口的指针,该接口用于公开与响应传入请求的服务器关联的特定于 WSD 的设备语义。
返回值
可能的返回值包括但不限于以下内容:
返回代码 | 说明 |
---|---|
|
方法已成功完成。 |
|
pszLocalId 为 NULL,pszLocalId 的字符长度超过 WSD_MAX_TEXT_LENGTH (8192) ,或 pszLocalId 指向前缀为 https 的 URL,并且该 URL 与 ppHostAddresses 引用的传输地址的 URL 不匹配。 |
|
ppDeviceHost 为 NULL。 |
|
内存不足,无法完成操作。 |
注解
WSDCreateDeviceHostAdvanced 函数调用 IWSDDeviceHost::Init 方法,该方法初始化 IWSDDeviceHost 对象的实例。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows Vista [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2008 [仅限桌面应用] |
目标平台 | Windows |
标头 | wsdhost.h (包括 Wsdapi.h) |
Library | Wsdapi.lib |
DLL | Wsdapi.dll |