使用 WSD 质询程序对断开连接的扫描程序进行质询

重要

WSD 挑战者功能已弃用,所有与 WSD 挑战者相关的文档都将存档到以前版本的文档。

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

一类设备的质询由 WSDCHNGRallengeDeviceClass WSD 质询函数发起。 WIA 驱动程序通常不必直接调用此函数,因为 WIA 服务为所有 WIA 设备调用它。

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

通常,使用 WSDScan.sys 的 WIA 驱动程序仅使用以下 WSD 挑战者函数:

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

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

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

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

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

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

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

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

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