使用 WSD 质询器质询断开连接的扫描仪

重要

WSD Challenger 功能已弃用,所有 WSD Challenger 相关文档将于 2018 年删除。

Web 服务扫描程序驱动程序可以质询断开连接的扫描程序,以在扫描程序重新联机时与设备重新建立通信。 为了质询断开连接的扫描程序,驱动程序使用 WSD 质询器 DLL (WSDCHNGR.DLL) Vista 提供的 Windows DLL。 WINDOWS WIA) 服务 (Windows WIA) 服务还使用 WSDCHNGR.DLL 来主动监视所有 WSDScan 扫描程序设备,使驱动程序能够响应设备通信失败后的挑战。

对一类设备的挑战由 WSDCHNGRChallengeDeviceClass WSD Challenge 函数发起。 WIA 驱动程序通常无需直接调用此函数,因为 WIA 服务会针对所有 WIA 设备调用它。

由于 WIA 驱动程序在它支持的设备断开连接后不久即卸载,因此驱动程序本身 无法保持WSDCHNGR.DLL 状态。 因此,驱动程序无法继续监视 WSD,并且无法在重新联机时重新连接到设备。 相反,使用 WSDScan.sys 内核模式驱动程序安装的 WIA 驱动程序可以使用 WIA 服务来质询设备类,使监视的挑战性在卸载驱动程序后继续。

通常,使用 WSDWSDScan.sys的 WIA 驱动程序仅使用以下 WSD 质询器函数:

WSDCHNGRInitialize
初始化 WIA 驱动程序客户端使用的 WSD 质询器接口。 加载驱动程序时调用此函数。

WSDCHNGRShutdown
关闭 WIA 驱动程序客户端使用的 WSD 质询器接口。 卸载驱动程序时调用此函数。

注意 发生此关闭时,如果设备是 WSDScan 类设备,WIA 服务将在驱动程序卸载并终止其 Web 服务质询接口后,继续为设备运行 WSD 质询监视。

WSDCHNGRRegisterDeviceToChallenge
注册要质询的设备。 在驱动程序遇到任何潜在的通信故障后调用此函数。 同一设备可以多次注册质询。 如果成功注册第一S_OK,WSDCHNGRRegisterDeviceToChallenge 将返回新设备。 当为已S_FALSE的设备调用此函数时,此函数将返回此函数。

以下代码示例显示如何使用这些 WSD 质询函数初始化 WSD 质询程序,以及如何在潜在的通信故障后注册扫描程序设备以具有挑战性:

用于筛选错误代码的宏示例

演示如何质询可能已断开连接的设备的代码示例

演示如何实现帮助程序方法的代码示例

有关这些示例中使用的定义和变量详细信息,请参阅示例中使用的定义 和变量