次の方法で共有


ドキュメントフィーダーのサポートを追加

重要

この記事には、旧 Windows オペレーティング システムに適用される情報が含まれています。

ドキュメント フィーダーは、スキャナーに取り付けられている、またはスキャナーに組み込まれている単位で、スキャンする位置に用紙ドキュメントを自動的にフィードします。 ドキュメント フィーダーを備えたスキャナーの場合、機能は、次の一覧に含まれるプロパティの追加によって公開および制御されます。 Windows Me と Windows XP の場合、ルート項目には次のプロパティがあります。

Windows Me と Windows XP の場合、次のオプションのドキュメント フィーダー プロパティが子項目に配置されます。

デバイスにフラットベッド、ドキュメント フィーダー、およびデュプレクサがある場合、ドライバーは WIA_DPS_DOCUMENT_HANDLING_CAPABILITIES プロパティを FEED | FLAT | DUP のように報告します。 WIA_DPS_DOCUMENT_HANDLING_SELECT の有効な値が正しく設定されていることを確認します。

たとえば、アプリケーションがドキュメント フィーダーから 3 ページの二重スキャンを実行するとします。 これを実現するために、アプリケーションは WIA_DPS_DOCUMENT_HANDLING_SELECT プロパティを (FEEDER | DUPLEX)、WIA_DPS_PAGES プロパティを 3 に設定します。 アプリケーションが最初にページの先頭をスキャンする場合は、WIA_DPS_DOCUMENT_HANDLING_SELECT プロパティを FEEDER | DUPLEX | FRONT_FIRST にセットする。 これが完了すると、アプリケーションはデータ転送を要求する子項目に移動しなければなりません。 ミニドライバーは、フィーダーの最初のページの前面をページ 1 として報告し、そのページの背面を 2 ページ目として、2 番目のページの前面を 3 ページ目として報告します。

デバイスにドキュメント フィーダーがある場合は、ドキュメント フィーダーのプロパティをサポートする必要があります。

ドキュメント フィーダーからデータを取得する

スキャナーがドキュメント フィーダーからイメージを取得するときに、 IWiaMiniDrv::drvAcquireItemData メソッドの実装で行う必要があるいくつかの変更があります。

  1. アプリケーションは、WIA_DPS_DOCUMENT_HANDLING_CAPABILITIES プロパティを読み取って、スキャナーがドキュメント フィーダーを使用したスキャンをサポートしているかどうかを判断します。

  2. アプリケーションは、WIA_DPS_DOCUMENT_HANDLING_SELECT プロパティを読み取り、スキャナーがドキュメント フィーダーを使用してスキャンするように構成されているかどうかを判断します。

  3. アプリケーションは、WIA_DPS_DOCUMENT_HANDLING_STATUS を読み取ることによって、ドキュメント フィーダーに用紙があるかどうかを判断します。 フィーダーに用紙がない場合は、WIA_DPS_DOCUMENT_HANDLING_STATUS を適切な状態コードに設定し、取得が行われた直後に IWiaMiniDrv::drvAcquireItemData から WIA_ERROR_PAPER_EMPTY を返します。

  4. WIA_DPS_PAGES プロパティを調べて、スキャン動作を確認します。 このプロパティが 0 の場合は、フィーダーが空になるまですべてのページをスキャンします。 正の場合は、WIA_DPS_PAGES プロパティに含まれる値によって示されるページ数のみをスキャンします。

  5. IWiaMiniDrvCallBack::MiniDrvCallback メソッドを呼び出して、ループの制御、継続的なスキャン、WIA アプリケーションへのデータの送信 (一度に 1 ページずつ) を行うことで、要求されたページ数をスキャンします。 次のコード例は、このメソッドの仕組みを示します。

    for(int x=1; x=Pagecount; x++)
    {
        \\ Tell scanner to scan an image.
        \\ Receive image data from scanner.
        \\ Send the just-scanned image to the registered application.
    }
    
  6. WIA_IPA_TYMED が TYMED_CALLBACK または TYMED_MULTIPAGE_CALLBACK に設定されている場合は、1 つのページがスキャンされた後、次のページをスキャンする前に、追加のメッセージ (IT_MSG_NEW_PAGE) を送信する必要があります。 これを行うには、 wiasSendEndOfPage WIA サービス ユーティリティ関数を呼び出します。

ドキュメント フィーダー ドライバーが返すページ数は、WIA_DPS_PAGES プロパティの設定によって異なります。

WIA_DPS_PAGES が 0 の場合

  1. スキャナーが最初のページをスキャンできない場合は、すぐにエラー コードを返します。 これには、紙詰まりやスキャナーの用紙切れなどが含まれます。

  2. スキャナーが最初のページを正常にスキャンし、スキャンを続行できても用紙が不足している場合は、成功コード WIA_STATUS_END_OF_MEDIA 返します。 これは、転送が成功したが、スキャナーが紙切れであることをアプリケーションに通知します。 一部のアプリケーションは、 WIA_STATUS_END_OF_MEDIA するのと同じ方法で WIA_ERROR_PAPER_EMPTY に応答します。

  3. スキャナーが最初のページを正常にスキャンし、スキャンを続行できるが、データ損失にならないエラーが発生した場合は、 WIA_STATUS_END_OF_MEDIA 返します。 これにより、アプリケーションは回復し、エラーが発生する前にスキャンされたすべてのページを保存することができます。 それ以降のスキャンでは、スキャナーがエラーから適切に回復するまで、すぐにエラー コードが返されます。

  4. スキャナーが最初のページを正常にスキャンし、スキャンを続行できるが、データが失われるエラーが発生した場合は、すぐにエラー コードを返します。

WIA_DPS_PAGES が正の場合

  1. WIA_DPS_PAGES がゼロであるすべてのルールが適用されます。

  2. 要求されたページ数がスキャンされる前にスキャナーが用紙切れになった場合は、WIA_STATUS_END_OF_MEDIA 返します。 これにより、アプリケーションはスキャン セッションを閉じ、既に正常にスキャンされたページの数を保持できます。 一部のアプリケーションは、 WIA_STATUS_END_OF_MEDIA するのと同じ方法で WIA_ERROR_PAPER_EMPTY に応答します。