共用方式為


使用 WSD 挑戰程式來挑戰中斷連線的掃描器

重要

WSD Challenger 功能已被取代,且所有 WSD Challenger 相關文件都會封存到舊版檔。

當掃描器重新上線時,Web 服務掃描器驅動程式可能會挑戰中斷聯機的掃描器,以重新建立與裝置的通訊。 為了挑戰中斷連線的掃描器,驅動程式會使用 WSD Challenger DLL (WSDCHNGR.DLL windows Vista 所提供的) 。 Windows 映射擷取 (WIA) 服務也會使用 WSDCHNGR.DLL 主動監視所有 WSDScan 掃描儀裝置,並讓驅動程式在裝置通訊失敗後回應挑戰。

裝置類別的挑戰是由 WSDCHNGRChallengeDeviceClass WSD Challenge 函式所起始。 WIA 驅動程式通常不需要直接呼叫此函式,因為 WIA 服務會針對所有 WIA 裝置呼叫它。

因為 WIA 驅動程式會在它支援的裝置中斷連線之後立即卸除,所以驅動程式本身無法繼續 載入WSDCHNGR.DLL 。 因此,驅動程式無法繼續監視 WSD 挑戰,也無法在裝置重新上線時重新連線。 相反地,使用 WSDScan.sys 內核模式驅動程式安裝的 WIA 驅動程式可以使用 WIA 服務來挑戰裝置類別,並讓監視在卸除驅動程式之後繼續具有挑戰性。

一般而言,使用 WSDScan.sys 的 WIA 驅動程式只會使用下列 WSD Challenger 函式:

WSDCHNGRInitialize
初始化 WIA 驅動程式用戶端使用的 WSD Challenger 介面。 載入驅動程式時呼叫此函式。

WSDCHNGRShutdown
關閉 WIA 驅動程式用戶端使用的 WSD Challenger 介面。 卸除驅動程式時呼叫此函式。

發生此關機時,如果裝置是 WSDScan 類別裝置,WIA 服務會在驅動程式卸除並終止其 Web 服務 Challenge 介面之後,繼續執行裝置的 WSD 挑戰監視。

WSDCHNGRRegisterDeviceToChallenge
註冊要挑戰的裝置。 在驅動程式遇到任何潛在的通訊失敗之後呼叫此函式。 相同的裝置可以註冊一次以上的挑戰。 如果成功註冊第一個裝置,WSDCHNGRRegisterDeviceToChallenge 會傳回S_OK。 此函式會在針對已註冊要挑戰的裝置呼叫時傳回S_FALSE。

下列程式代碼範例示範如何使用這些 WSD Challenge 函式來初始化 WSD 挑戰程式,以及如何註冊掃描儀裝置,以在潛在的通訊失敗之後具有挑戰性:

篩選錯誤碼的宏範例

具挑戰性潛在中斷連線裝置的程式代碼範例

實作協助程式方法的程式代碼範例

如需這些範例中所用定義和變數的詳細資訊,請參閱 範例中使用的定義和變數