WIA マイクロドライバーの作成
多くのフラットベッド スキャナーも同様の方法で制御されます。 モデル間の一般的な動作は、WIA フラットベッド ドライバーと呼ばれるマイクロソフト提供の一般的なドライバーに抽象化されています。 このドライバーは、必要なデバイス固有の動作を実装する、スキャナー ベンダーによって提供されるマイクロドライバーと呼ばれる DLL を呼び出します。 WIA フラットベッド ドライバーとマイクロドライバーは、WIA ミニドライバーとして使用できます。 マイクロドライバーを使用する利点は、実装とデバッグがかなり簡単である点です。 すべてのスキャナーをマイクロドライバーによってサポートできるわけではありません。 シンプルなデバイス (デュプレクサーやその他の高度な機能を使用しない) や、基本機能ドライバーが必要なケースに最適です。
注 このセクションで説明する WIA マイクロドライバーは WIA 1.0 です。 現在、WIA 2.0 に対応する WIA マイクロドライバー モデルはありません。 WIA 2.0 (Windows Vista 以降) をサポートする Windows バージョンのコンピューターで実行される WIA マイクロドライバーを開発する場合、この WIA マイクロドライバーは他の WIA 1.0 デバイスと同様に動作し、WIA 1.0 互換モードの WIA 2.0 アプリケーションにより使用されます。
次の図は、WIA マイクロドライバー アーキテクチャのコンポーネントを示しています。
WIA フラットベッド ドライバーは、マイクロドライバーの WIA マイクロドライバー関数を呼び出すことにより、WIA サービスからの要求を処理します。 マイクロドライバーは、これらの各機能を実装する必要があります。 SCANINFO 構造は、スキャン ウィンドウや解像度などのスキャン パラメーターを格納して通信するためにマイクロドライバーに渡されます。 WIA フラットベッド ドライバーは、SCANINFO 構造から値を読み取りますが、書き込むことはありません。 SCANINFO メンバーの設定のマイクロドライバーが担当します。
マイクロドライバーは、スキャンのパラメーターを格納する必要はありませんが、SCANINFO 構造に格納されている値に依存する必要があります。 これは、デバイスへの複数のアプリケーション アクセスをサポートするために重要です。 2 つのアプリケーションが同じデバイスで同時にスキャンを設定する場合、マイクロドライバーのコピーは 1 つだけ実行されます。 このような状況では、マイクロドライバーは、デバイスにアクセスしようとしているアプリケーションに応じて、2 つの異なる SCANINFO 構造のいずれかを使用して呼び出されます。