WSDCreateDeviceProxyAdvanced 函数 (wsdclient.h)

创建设备代理并返回指向 IWSDDeviceProxy 接口的指针。

语法

HRESULT WSDCreateDeviceProxyAdvanced(
  [in]  LPCWSTR         pszDeviceId,
        IWSDAddress     *pDeviceAddress,
  [in]  LPCWSTR         pszLocalId,
  [in]  IWSDXMLContext  *pContext,
  [out] IWSDDeviceProxy **ppDeviceProxy
);

参数

[in] pszDeviceId

设备的逻辑或物理地址。 逻辑地址的形式 urn:uuid:{guid}为 。 物理地址是前缀为 http 或 https 的 URI。 如果此地址是前缀为 https 的 URI,则代理将使用 SSL/TLS 协议。

如果 pszDeviceIdpszLocalId 是前缀为 https 的 URL,则两个 URL 必须相同。 如果不是这种情况, WSDCreateDeviceProxyAdvanced 将返回E_INVALIDARG。

设备地址可能以 @ 字符为前缀。 当 pszDeviceId 以 @开头时,此函数在创建设备代理时不会检索设备元数据。

pDeviceAddress

定义设备传输地址的 IWSDAddress 接口。 指定 pDeviceAddress 时,无需解析传递到 pszDeviceId 的逻辑地址即可创建设备代理。 此参数可以为 NULL

[in] pszLocalId

客户端的逻辑或物理地址,用于标识代理并充当事件接收器终结点。 逻辑地址的形式 urn:uuid:{guid}为 。

如果客户端使用安全通道来接收事件,则地址是前缀为 https 的 URI。 此 URI 应指定端口 5358,因为此端口是为使用 WSDAPI 进行安全连接而保留的。 在调用 WSDCreateDeviceProxyAdvanced 之前,必须使用 SSL 服务器证书配置端口。 有关端口配置的详细信息,请参阅 HttpSetServiceConfiguration

[in] pContext

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

如果 为 NULL,则使用表示内置消息类型和命名空间的默认上下文。

[out] ppDeviceProxy

指向 IWSDDeviceProxy 接口的指针,该接口用于表示客户端应用程序和中间件的远程 WSD 设备。

返回值

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

返回代码 说明
S_OK
方法已成功完成。
E_INVALIDARG
pszDeviceIdNULLpszLocalIdNULLpszDeviceId 的字符长度超过 WSD_MAX_TEXT_LENGTH (8192) , pszLocalId 的字符长度超过 WSD_MAX_TEXT_LENGTH (8192) ,或 pszDeviceId 指向以 https 为前缀的 URI,且该 URL 与传递给 pszLocalId 的 URI 不匹配。
E_POINTER
ppDeviceProxyNULL
E_OUTOFMEMORY
内存不足,无法完成操作。

注解

WSDCreateDeviceProxyAdvanced 函数调用 IWSDDeviceProxy::Init 方法,该方法初始化 IWSDDeviceProxy 对象的实例。

除非 pszDeviceId 参数以 @ 字符开头,否则此函数还将检索设备元数据。 若要在创建设备代理后检索设备元数据,请在返回的 IWSDDeviceProxy 对象上调用 IWSDDeviceProxy::BeginGetMetadataIWSDDeviceProxy::EndGetMetadata

有关 对 WSDCreateDeviceProxyAdvanced 函数调用进行故障排除的信息,请参阅 WSDAPI 应用程序疑难解答

要求

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

另请参阅

WSDAPI 应用程序疑难解答