IWSDiscoveryPublisher::MatchResolveEx 方法 (wsddisco.h)

确定 Resolve 消息是否与指定的主机匹配,并在匹配时发送包含扩展信息的 WS-Discovery ResolveMatches 消息。

语法

HRESULT MatchResolveEx(
  [in]           const WSD_SOAP_MESSAGE *pResolveMessage,
  [in]           IWSDMessageParameters  *pMessageParameters,
  [in]           LPCWSTR                pszId,
  [in]           ULONGLONG              ullMetadataVersion,
  [in]           ULONGLONG              ullInstanceId,
  [in]           ULONGLONG              ullMessageNumber,
  [in, optional] LPCWSTR                pszSessionId,
  [in, optional] const WSD_NAME_LIST    *pTypesList,
  [in, optional] const WSD_URI_LIST     *pScopesList,
  [in, optional] const WSD_URI_LIST     *pXAddrsList,
  [in, optional] const WSDXML_ELEMENT   *pHeaderAny,
  [in, optional] const WSDXML_ELEMENT   *pReferenceParameterAny,
  [in, optional] const WSDXML_ELEMENT   *pPolicyAny,
  [in, optional] const WSDXML_ELEMENT   *pEndpointReferenceAny,
  [in, optional] const WSDXML_ELEMENT   *pAny
);

参数

[in] pResolveMessage

指向 WSD_SOAP_MESSAGE 结构的指针,该结构表示传递到通知接收器的 ResolveHandler 的 Resolve 消息。

[in] pMessageParameters

指向 IWSDMessageParameters 对象的指针,该对象表示传递到通知接收器的 ResolveHandler 的传输参数。

[in] pszId

设备的逻辑或物理地址,用作设备终结点地址。 逻辑地址的形式 urn:uuid:{guid}为 。 物理地址可以是以 http 或 https 为前缀的 URI,也可以是前缀为 的 uriURI。 尽可能使用逻辑地址。

[in] ullMetadataVersion

当前元数据版本。

注意 为了与 WS-Discovery 规范兼容,此值必须小于或等于 UINT_MAX (4294967295) 。
 

[in] ullInstanceId

要发布的设备的当前实例的标识符。 每当重新启动服务时,都必须递增此标识符。 有关实例标识符的详细信息,请参阅 WS-Discovery 规范的附录 I。

注意 为了与 WS-Discovery 规范兼容,此值必须小于或等于 UINT_MAX (4294967295) 。
 

[in] ullMessageNumber

当前消息的实例标识符范围内的计数器。 必须递增每条消息的消息编号。

注意 为了与 WS-Discovery 规范兼容,此值必须小于或等于 UINT_MAX (4294967295) 。
 

[in, optional] pszSessionId

当前会话的实例标识符范围内的唯一标识符。 此参数对应于探测消息中 AppSequence 块中的序列标识符。 有关序列标识符的详细信息,请参阅 WS-Discovery 规范的附录 I。

此参数可以为 NULL

[in, optional] pTypesList

指向 WSD_NAME_LIST 结构的指针,该结构表示发布主机支持的类型列表。 可能为 NULL。 如果指定 pTypesList,MatchResolveEx 将使用 WS-Discovery 匹配逻辑来验证类型是否与 pResolveMessage 中指定的类型匹配。

[in, optional] pScopesList

指向 WSD_URI_LIST 结构的指针,该结构表示发布主机支持的匹配范围的列表。 列表包含字符串形式的哈希值。 可能为 NULL。 如果指定了 pScopesList,MatchResolveEx 将使用 WS-Discovery 匹配逻辑来验证范围是否与 pResolveMessage 中指定的范围匹配。

[in, optional] pXAddrsList

指向表示发布主机支持的传输地址列表 的WSD_URI_LIST 结构的指针。 每个传输地址字符串都包含可用于远程主机连接的地址和端口号。 pXAddrsListpXAddrsList-Element> 不能为 NULL

[in, optional] pHeaderAny

指向 WSDXML_ELEMENT 结构的指针,该结构包含要插入到标头的“ANY”节中的 XML 元素。

[in, optional] pReferenceParameterAny

指向 WSDXML_ELEMENT 结构的指针,该结构包含要插入到引用参数属性的“ANY”节中的 XML 元素。

[in, optional] pPolicyAny

未使用。

[in, optional] pEndpointReferenceAny

指向 WSDXML_ELEMENT 结构的指针,该结构包含要插入终结点的“ANY”节中的 XML 元素。

[in, optional] pAny

指向 WSDXML_ELEMENT 结构的指针,该结构包含要插入到消息正文的“ANY”节中的 XML 元素。

返回值

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

返回代码 说明
S_OK
该方法已成功完成。
E_INVALIDARG
以下一个或多个条件为 true:
  • pszIdNULL
  • pszId 的长度(以字符为单位)超过 WSD_MAX_TEXT_LENGTH (8192) 。
  • pszSessionId 的长度超过 WSD_MAX_TEXT_LENGTH (8192) 。
  • pProbeMessageNULL
E_ABORT
发布服务器尚未启动。 附加通知接收器将启动发布服务器。 若要附加接收器,请调用 RegisterNotificationSink
E_OUTOFMEMORY
内存不足,无法完成操作。

注解

MatchResolveEx 应仅在发现发布者发出 ResolveHandler 回调时使用。 pResolveMessagepMessageParameters 直接从回调传递到 MatchResolveExResolveHandler 还会传递发布者所需的信息,以确定提供的 Resolve 消息是否匹配,如果匹配,则根据需要发出 ResolveMatches 响应。

MatchResolveEx 在所有绑定适配器上发送 ResolveMatches 消息,并在 WS-Discovery 需要时自动发出消息重新传输。

引用 WSDXML_ELEMENT 结构的参数可用于扩展使用自定义信息发送的 ResolveMatches 消息的内容。

要求

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

另请参阅

IWSDiscoveryPublisher