WSDAPI 接口概述

设备上的 Web 服务 API (WSDAPI) 用于开发查找和访问设备的客户端应用程序,以及开发在 Windows Vista 和 Windows Server 2008 上运行的设备主机和相关服务。 函数发现 API 和 WsdCodeGen 工具是可用于客户端、设备主机和服务开发的补充工具。 WSDAPI 接口可以直接用于公开高级功能。

主要 WSDAPI 接口

四个主要的 WSDAPI 接口是 IWSDiscoveryProviderIWSDiscoveryPublisherIWSDDeviceProxyIWSDDeviceHost。 有关所有 WSDAPI 接口的列表,请参阅 设备上的 Web 服务接口

IWSDiscoveryProvider

IWSDiscoveryProvider 用于在客户端上实现WS-Discovery功能。

IWSDiscoveryProvider 问题WS-Discovery 探测解析 消息,并接收 HelloByeProbeMatchesResolveMatches 消息。 创建用于描述和控制特定 DPWS 设备的 IWSDDeviceProxy 接口时,请使用通过 IWSDiscoveryProvider 接口检索的信息。

在创建设备代理之前仅解析特定的 DPWS 设备地址时,不需要 IWSDiscoveryProvider 接口。 如果需要,WSDCreateDeviceProxy 将自动解析设备地址。

函数发现 API 可用于通用设备和服务发现,因为该 API 可以发现 DPWS 设备和使用其他协议的设备。 编写泛型发现应用程序时,请考虑使用函数发现。

IWSDiscoveryPublisher

IWSDiscoveryPublisher 用于在目标服务(如设备)上实现WS-Discovery功能。

IWSDiscoveryPublisher 允许应用程序使用WS-Discovery Hello 和 Bye 消息发布其状态。 此接口允许应用程序接收探测和解析请求,并构造和发送 ProbeMatches 和 ResolveMatches 响应。

在仅发布 IWSDDeviceHost 对象的存在时,不需要 IWSDiscoveryPublisher 接口。 IWSDDeviceHost 管理自己的WS-Discovery状态。

IWSDDeviceProxy

IWSDDeviceProxy 用于实现客户端 WS-Discovery、WS-MetadataExchange 和控制功能。 此功能包括可选的安全通道、WS-Eventing 和附件功能。

IWSDDeviceProxy 接口具有以下三种用途。

  • 如有必要,解析逻辑设备地址。
  • 启动对设备的元数据请求,以枚举服务的类型和地址。
  • 提供 IWSDServiceProxy 对象的源,该对象可用于向设备上的特定服务发出控制消息。

IWSDDeviceProxy 对象通常完全在 WsdCodeGen 生成的代码中创建和使用。

IWSDDeviceHost

IWSDDeviceHost 用于实现设备端 WS-Discovery、WS-MetadataExchange 和服务承载功能。 托管服务可能会响应控制消息,并且可能支持安全通道、WS-Eventing 和附件功能。

IWSDDeviceHost 接口具有以下用途。

  • 承载服务对象。
  • 使用 WS-Discovery 宣布网络上是否存在设备主机。
  • 响应WS-MetadataExchange请求,并描述托管服务的类型和位置。
  • 将网络请求调度到服务对象中。

WS-Discovery、WS-MetadataExchange 和 WS-Eventing 订阅管理功能完全在设备主机对象中处理。 在设备主机中托管服务之前,必须满足以下要求。

  • 必须通过调用 WSDCreateDeviceHost 来创建主机。
  • 必须与服务关联的元数据进行注册。
  • 必须注册服务本身。
  • 必须启动设备主机。

IWSDDeviceHost 对象通常在 WsdCodeGen 生成的代码中创建和使用。