次の方法で共有


WSD Challenger で切断されたスキャナーへのチャレンジ

重要

WSD Challenger 機能は廃止されたため、WSD Challenger 関連のすべてのドキュメントは以前のバージョンのドキュメントにアーカイブされます。

Web サービス スキャナー ドライバーは、スキャナーがオンラインに戻ったときにデバイスとの通信を再確立するため、切断されたスキャナーにチャレンジできます。 切断されたスキャナーにチャレンジするため、ドライバーは Windows Vista で提供されている WSD Challenger DLL (WSDCHNGR.DLL) を使用します。 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 サービス チャレンジ インターフェイスを終了した後も、デバイスの WSD チャレンジ監視を実行し続けます。

WSDCHNGRRegisterDeviceToChallenge
チャレンジするデバイスを登録します。 ドライバーが通信エラーの可能性を検出した後、この関数を呼び出します。 同じデバイスを複数回チャレンジに登録できます。 WSDCHNGRRegisterDeviceToChallenge は、最初のデバイスが正常に登録された場合に S_OK を返します。 この関数は、既に登録されているデバイスに対してチャレンジが呼び出されたときに S_FALSE を返します。

次のコード例は、これらの WSD Challenge 関数を使用して WSD Challenger を初期化する方法と、通信エラーの可能性が発生した後にスキャナー デバイスを登録する方法を示しています。

エラー コードをフィルター処理するマクロ例

切断された可能性のあるデバイスの通信の確立を試みるためのコード例

ヘルパー メソッドを実装するためのコード例

これらの例で使用される定義と変数について詳しくは、「例で使用される定義と変数」をご覧ください。