WIA スキャナー ツリー
次の図は、スキャナーとそれが生成した画像を示しています。
次の図は、Microsoft Windows Me または Windows XP スキャナー、またはそのスキャナーにドキュメント フィーダー、デュプレクサー、またはフィルム スキャナーがない場合の Windows Vista 上のスキャナーを示しています。
WIA は、次の図のように、前の図に示したスキャナーとそのイメージを項目ツリーとして表します。
ルート項目 (スキャナー自体) は、共通のデバイス プロパティ (カメラとスキャナーの両方に共通のプロパティ) とスキャナー固有のデバイス プロパティで構成されます。 同様に、各子項目は、カメラ項目とスキャナー項目の両方に共通のプロパティと、スキャナー項目に固有のプロパティで構成されます。
WIA サービスを通じて、アプリケーションはスキャナー項目から次を要求できます。
スキャナー機能のクエリ実行。
スキャナーデバイスのプロパティの設定。
データ転送の要求
Windows Me と Windows XP では、ルート項目のすぐ下に、一般的なスキャナー オブジェクトには、デバイスのデータ収集機能を表すスキャナー項目という 1 つの項目があります。 アプリケーションは、スキャナー項目のプロパティを設定してスキャンを設定します。 スキャンは、アプリケーションが WIA サービスを介してアイテムからデータを要求したときに実行されます。
Windows Me と Windows XP では、通常、アプリケーションでは、自動ドキュメント フィーダー (ADF) を含むフラットベッド スキャナーがルート項目と 1 つの子という 2 つの項目で表されることを想定しています。 すべてのデータ転送は、子項目から実行されます。 ドライバーは、そのプライベートな使用のために他の項目を作成することを選択できます。これらの項目は転送可能にすることができます。 (これを行うには、 wiasCreateChildAppItem呼び出しで項目タイプフラグの WiaItemTypeTransfer ビットを設定します。この定数は、Microsoft Windows SDK のドキュメントに記載されています。ただし、一般に、アプリケーションはこれらのプライベート項目を認識せず、それらを操作する方法もわかりません。 ADF を使用するスキャナーの場合、Windows Me または Windows XP では、スキャナーの子項目ではなく、スキャナーのルート項目に WIA_DPS_DOCUMENT_HANDLING_XXX プロパティを追加することで、ADF 機能が公開および制御されます。 これらのプロパティの詳細については、「WIA プロパティ」をご覧ください。 Windows Vista で ADF を使用するスキャナーの詳細については、「WIA フィーダー スキャナー」を参照してください。
デバイスにフラットベッドと ADF があり、双方向スキャンを実行できる場合、Windows Me または Windows XP では、ドライバーは WIA_DPS_DOCUMENT_HANDLING_CAPABILITIES プロパティを (FEED|FLAT|DUP)として報告します。
WIA_DPS_DOCUMENT_HANDLING_SELECT の有効な値が正しく設定されていることを確認します。 1 つのスキャン ジョブでスキャンされたすべてのドキュメントは、アイテム ツリー内の 1 つの子項目に存在します。 Windows Vista 上の ADF とデュプレクサを備えたスキャナーの詳細については、「WIA フィーダー スキャナー」を参照してください。
たとえば、アプリケーションが ADF から 3 ページの二重スキャンを実行するとします。 これを実現するために、アプリケーションは WIA_DPS_DOCUMENT_HANDLING_SELECT プロパティを (FEEDER |DUPLEX)、WIA_DPS_PAGES プロパティを 3 に設定します。 アプリケーションが最初にページの先頭をスキャンする場合は、WIA_DPS_DOCUMENT_HANDLING_SELECT プロパティを (FEEDER | DUPLEX |FRONT_FIRST)に設定する必要があります。 これが完了すると、アプリケーションはデータ転送を要求する子項目に移動する必要があります。 ミニドライバーは、ADF の最初のページの先頭をページ 1 として、そのページの背面をページ 2 として報告し、ADF の 2 番目のページの前面をページ 3 として報告します。
デバイスに ADF がある場合は、ADF プロパティをサポートする必要があります。