WIA アーキテクチャの概要
WIA は、クライアント アプリケーションの堅牢な動作を保証するために、コンポーネント オブジェクト モデル (COM) アウトプロセス サーバーとして実装されます。
WIA には、WIA サービス、WIA ドライバー サービス ライブラリ、ベンダー ユーザー モード ドライバーの 3 つのメイン コンポーネントがあります。
WIA サービスは、イメージング デバイスを列挙し、デバイスのプロパティを取得し、デバイスのイベントを設定して、デバイス オブジェクトを作成します。
WIA ドライバー サービス ライブラリは、デバイスに依存しないすべてのサービスを実装します。
ベンダー ユーザー モード ドライバーは、WIA のプロパティとコマンドを特定のデバイスにマップします。 WIA ベンダーのユーザー モード ドライバーには、次の 2 種類があります。
ミニドライバー: これは、ベンダー ドライバーの最も一般的な種類です。 これは、WIA ミニドライバー インターフェイスを実装する COM オブジェクトです。 ベンダーは、この種類のドライバーを使用して、すべての WIA 機能を利用できます。
マイクロドライバー: このドライバーはミニドライバーよりもはるかに制限されているため、開発が簡単です。 これは主に基本的なスキャナー デバイスに使用されます。 このドライバーは COM オブジェクトではなく、いくつかの関数をエクスポートする DLL です。 マイクロドライバーは、カメラ デバイスには使用できません。
次の図に、WIA のアーキテクチャを示します。
イメージング アプリケーション
イメージング アプリケーションはミニドライバーと直接通信するのではなく、WIA アプリケーション プログラミング インターフェイス (API) を介して WIA サービスと通信して、イメージにアクセスし、WIA デバイスからデータを取得します。 これらのアプリケーションでは、システムが提供する共通のユーザー インターフェイスまたはベンダーが提供するユーザー インターフェイスを使用できます。 イメージング アプリケーション用 WIA API の詳細については、Microsoft Windows SDK のドキュメントを参照してください。
WIA サービス
WIA サービスは、イメージング アプリケーションや WIA ミニドライバーと通信するシステム提供のコンポーネントです。 WIA サービスは、アプリケーションとは別のプロセスで、WIA ミニドライバーと同じプロセスで実行されます。 アプリケーションはデバイス要求を WIA サービスに転送し、WIA デバイス ドライバー インターフェイス (DDI) を介して適切なミニドライバーに要求を送信します。
WIA ドライバー サービス ライブラリ
WIA ドライバー サービス ライブラリは、WIA ミニドライバーのヘルパー関数を提供するシステム提供のコンポーネントです。 ミニドライバーは、ヘルパー関数を呼び出して、次のようなタスクを実行できます。
WIA ドライバー項目ツリーを初期化します。
デバイスのプロパティの読み取り、書き込み、検証を行います。
データを転送します。
または、ミニドライバーは、このようなタスクを単独で実行できます。 ヘルパー関数を利用することで、開発時間と WIA ミニドライバーのサイズを削減しながら、個々のソリューションを開発する柔軟性を持つことができます。
WIA ユーザー モード ミニドライバー
WIA ミニドライバーは、WIA プロパティの変更とコマンドをイメージング デバイスに送信する、ベンダー提供のユーザー モード コンポーネントです。 ミニドライバーは、ミニドライバーと通信するために WIA サービスによって呼び出される WIA DDI を実装します。
WIA ミニドライバーは、標準の WIA ミニドライバー インターフェイスを実装します。 ミニドライバーは、USB ドライバーなどの標準の Microsoft Windows カーネル モード ドライバーを介してイメージング デバイスと通信します。 ミニドライバーは、CreateFile、ReadFile、WriteFile、DeviceIoControl Win32 関数 (Microsoft Windows SDK ドキュメントで説明) を呼び出すことによってカーネル モード ドライバーと通信します。
イメージング アプリケーションは、WIA ミニドライバーへの直接呼び出しはできません。 ドライバーを直接呼び出すには、WIA サービスのみが許可されます。
カーネル I/O ドライバー
カーネル モードの静止画像ドライバーは、静止画像デバイスとの間でデータを配信するシステム提供または IHV 提供のコンポーネントです。 カーネル モードの静止画像ドライバーはバス固有です。
Microsoft は、USB、SCSI、IEEE 1394 バス用の WDM ベースのカーネル モードの静止画像ドライバーを提供しています。 詳細については、「静止画像デバイスのカーネル モード ドライバーへのアクセス」を参照してください 。
ベンダーは、イメージング デバイスが Microsoft が提供するカーネル モード I/O ドライバー と互換性がない場合にのみ、カーネル モードの静止画像ドライバーを提供する必要があります。