次の方法で共有


WIA 互換性レイヤーのデータ転送の概要

転送互換性レイヤーがないと、Windows Vista WIA ドライバーは、レガシおよび Windows Vista アプリケーションからのデータ転送を実行できるように、TYMED とストリーム ベースのデータ転送スタイルの両方を実装する必要がありました。 同様に、Windows Vista WIA アプリケーションでは、レガシ ドライバーと Windows Vista ドライバーからのデータ転送を実行するために、両方の転送スタイル (異なるコールバック実装を使用) を実装する必要がありました。 WIA 互換性レイヤーでは、ドライバーの種類は WIA アプリケーションに対して透過的であり、Windows Vista WIA ドライバーはレガシ転送コードを処理する必要はありません。

互換性レイヤーが必要な場合は、2 つの転送ケースがあり、それぞれさらに 2 つのサブカテゴリに分類できます。

  1. Windows Vista ドライバーからデータを転送するレガシ アプリケーション:

    1. ファイル転送: アプリケーションは IWiaDataTransfer::idtGetBandedData を呼び出します。
    2. コールバック転送: アプリケーションは IWiaDataTransfer::idtGetData を呼び出します。
  2. レガシ ドライバーからデータを転送する Windows Vista アプリケーション:

    1. ファイル転送: 互換性レイヤーは、レガシ ドライバーを使用してファイル転送を開始します。
    2. コールバック転送: 互換性レイヤーは、レガシ ドライバーを使用してコールバック転送を開始します。

互換性レイヤーを使用するかどうかを判断する最初の手順は、WIA ドライバーが Windows Vista ドライバーかレガシ ドライバーかを判断することです。 WIA サービスは、ドライバーが IStiUSD::GetCapabilities から返すバージョン番号を調べることで、これを決定します。 レガシ ドライバーはバージョン番号の STI_VERSION を返しますが、Windows Vista ドライバーは STI_VERSION_3 を返す必要があります。 このバージョン番号は、Windows Vista プロパティの WIA COM プロキシ (および WIA アプリケーション) WIA_DIP_STI_DRIVER_VERSION に公開されます。

互換性レイヤーを使用するかどうかを判断する次の手順は、アプリケーションが Windows Vista WIA アプリケーションかレガシ WIA アプリケーションかを判断することです。アプリケーションが IWiaDataTransfer::idtGetBandedData または IWiaDataTransfer::idtGetData を呼び出す場合、レガシ WIA アプリケーションで、アプリケーションが IWiaTransfer::Download を呼び出す場合、Windows Vista WIA アプリケーションです。

新しいストリーム ベースのデータ転送モデルでは、WIA サービスは TYMED_CALLBACK と TYMED_FILE (または TYMED_MULTIPAGE_CALLBACK と TYMED_MULTIPAGE_FILE) を区別しなくなります。 代わりに、TYMED_FILE と TYMED_MULTIPAGE_FILE のみが存在します。 ドライバーがマルチページ TIFF (または PDF) スキャンをサポートできるようにするには、TYMED_MULTIPAGE_FILE が必要です。 TYMED 定数の詳細については、「TYMED について」を参照してください。

WIA は、Windows Vista ドライバーで WiaImgFmt_MEMORYBMP メモリ ビットマップ形式をサポートしません。

Windows Vista ドライバーは、転送中にドライバーがイメージ全体をキャッシュするのではなく、バンドでデータを転送するための更新メッセージを送信できます。 この形式の転送は、スクロール フィード スキャナーを使用したスキャンなど、転送される画像のサイズをすぐに判断できないスキャン中にデータを転送する場合に便利です。 バンドで画像データを転送するには、ドライバーは IWiaTransferCallback::GetNextStream で渡されたストリームで IStream::Seek を呼び出す必要があります。

TYMED とストリームベースの転送の詳細については、「データ転送」を参照してください。

IWiaDataTransferIWiaTransferIStream インターフェイスについては、Microsoft Windows SDK のドキュメントで説明されています。