对其他 WSDAPI 应用程序进行故障排除

应用程序可以直接调用 WSDAPI 接口和函数来执行设备发现和元数据交换。 这些应用程序使用的消息模式各不相同。

本故障排除指南旨在帮助 WSDAPI 应用程序开发人员成功实现设备代理。 本指南并非旨在帮助对 WSDAPI 的所有方面进行故障排除。 如果已成功创建设备代理,并且客户端和主机可以在网络上相互查看,则本指南无法解决应用程序的问题。 若要解决这些应用程序问题,请按照 启用 WSDAPI 跟踪 中的说明操作,并联系 Microsoft 支持部门以获取进一步的帮助。

对调用 WSDCreateDeviceProxy 的客户端进行故障排除

应用程序调用 WSDCreateDeviceProxy 来创建和初始化 IWSDeviceProxy 接口的实例。 此设备代理对象可用于播发设备上的服务以及交换元数据。

调用 WSDCreateDeviceProxy 的应用程序始终使用以下消息。

调用 WSDCreateDeviceProxy 的应用程序有时会使用以下消息。

逻辑设备地址 (即 urn:uuid:{guid}) 形式的设备地址传递到 pszDeviceId 时,将生成 Resolve 和 ResolveMatches 消息。 将物理设备地址传递给 pszDeviceId 时,不会生成这些消息。 使用 Resolve 和 ResolveMatches 消息时,它们先于 GetGetResponse 消息发送。

应使用以下诊断过程 (,以便) 帮助识别使用物理设备地址调用 WSDCreateDeviceProxy 的应用程序的问题。

  1. 检查适配器和防火墙设置
  2. 使用通用主机和客户端进行 HTTP 元数据交换
  3. 使用 WinHTTP 日志记录验证获取流量
  4. 检查 HTTP 元数据交换的网络跟踪

应使用以下诊断过程 (,以便) 帮助识别使用逻辑设备地址调用 WSDCreateDeviceProxy 的应用程序的问题。

  1. 检查适配器和防火墙设置
  2. 对 UDP WS-Discovery 使用通用主机和客户端
  3. 使用 WSD 调试客户端验证多播流量
  4. 检查 UDP WS-Discovery 的网络跟踪
  5. 使用通用主机和客户端进行 HTTP 元数据交换
  6. 使用 WinHTTP 日志记录验证获取流量
  7. 检查 HTTP 元数据交换的网络跟踪

验证 是否已生成 ResolveResolveMatches 消息并满足流量要求。 无需在 WSD 调试客户端输出或网络跟踪中查找 ProbeProbeMatches 消息。

对调用 WSDCreateDeviceProxyAdvanced 的客户端进行故障排除

应用程序调用 WSDCreateDeviceProxyAdvanced 来创建和初始化 IWSDeviceProxy 接口的实例。 与 WSDCreateDeviceProxy 不同, WSDCreateDeviceProxyAdvanced 具有用于定义设备传输地址的 pDeviceAddress 参数。 如果指定了此传输地址,则不需要逻辑地址解析,并且不会生成 ResolveResolveMatches 消息。

如果 pDeviceAddress 设置为 NULLpszDeviceId 是逻辑地址,则需要地址解析,并生成 ResolveResolveMatches 消息。

应使用以下诊断过程 (,以便) 帮助识别使用非 NULLpDeviceAddress 参数调用 WSDCreateDeviceProxyAdvanced 的应用程序的问题。pDeviceAddressNULLpszDeviceId 为物理地址时,也可以使用这些过程。

  1. 检查适配器和防火墙设置
  2. 使用通用主机和客户端进行 HTTP 元数据交换
  3. 使用 WinHTTP 日志记录验证获取流量
  4. 检查 HTTP 元数据交换的网络跟踪

应使用以下诊断过程 (,以便) 帮助识别调用 WSDCreateDeviceProxyAdvancedpDeviceAddress 设置为 NULLpszDeviceId 设置为逻辑地址的应用程序的问题。

  1. 检查适配器和防火墙设置
  2. 对 UDP WS-Discovery 使用通用主机和客户端
  3. 使用 WSD 调试客户端验证多播流量
  4. 检查 UDP WS-Discovery 的网络跟踪
  5. 使用通用主机和客户端进行 HTTP 元数据交换
  6. 使用 WinHTTP 日志记录验证获取流量
  7. 检查 HTTP 元数据交换的网络跟踪

验证 是否已生成 ResolveResolveMatches 消息并满足流量要求。 无需在 WSD 调试客户端输出或网络跟踪中查找 ProbeProbeMatches 消息。

使用 IWSDiscoveryProvider 接口对客户端进行故障排除

调用 IWSDiscoveryProvider 接口的应用程序不执行元数据交换。 此接口仅用于发现。 对于 在 IWSDiscoveryProvider 接口上调用的每个方法,消息模式和故障排除过程各不相同。

当应用程序调用 IWSDiscoveryProvider::SearchByType 时,将生成 探测 消息。 探测消息通过 UDP 多播发送到端口 3702。 在响应中生成 ProbeMatches 消息。 ProbeMatches 消息由 UDP 单播发送,它源自端口 3702。

当应用程序调用 IWSDiscoveryProvider::SearchById 时,将生成 Resolve 消息。 UDP 多播将 Resolve 消息发送到端口 3702。 在响应中生成 ResolveMatches 消息。 ResolveMatches 由 UDP 单播发送,它源自端口 3702。

应使用以下诊断过程 (,以便) 帮助识别调用 IWSDiscoveryProvider::SearchByTypeIWSDiscoveryProvider::SearchById 的应用程序的问题。 验证被调用的 API 生成的消息是否满足流量要求。

  1. 检查适配器和防火墙设置
  2. 对 UDP WS-Discovery 使用通用主机和客户端
  3. 使用 WSD 调试客户端验证多播流量
  4. 检查 UDP WS-Discovery 的网络跟踪

如果应用程序调用 IWSDiscoveryProvider::SearchByAddress,则它是一个定向发现应用程序。 有关更多故障排除信息,请参阅 使用定向发现对应用程序进行故障排除

使用 WSDAPI 故障排除入门