次の方法で共有


レガシ アプリケーションと Windows Vista ドライバーのマッピング

重要

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

このセクションでは、レガシ アプリケーションが Windows Vista ドライバーと連携する必要がある場合、Windows Vista の転送メッセージとデータ フローがレガシ転送メッセージとデータ フローにどのようにマッピングされるのかについて説明します。

コールバック転送

次の表は、Windows Vista ドライバーのコールバック転送メッセージをレガシ アプリケーションに送信されたメッセージにマッピングする方法を示しています。

Windows Vista ドライバー メッセージ レガシ アプリケーション メッセージ (互換性レイヤー変換後)
WIA_TRANSFER_MSG_STATUS IT_MSG_STATUS
WIA_TRANSFER_MSG_ERROR 無視されます。
WIA_TRANSFER_MSG_END_OF_STREAM 無視されます。 このメッセージは、IWiaTransferCallback::GetNextStream が呼び出されるたびに常に送信されます。 メッセージの重複を避けるため、このメッセージは代わりに GetNextStream の実装内で処理されます。
WIA_TRANSFER_MSG_END_OF_TRANSFER IT_MSG_TERMINATION (WIA_TRANSFER_MSG_END_OF_TRANSFER はドライバーによって送信されません)。
WIA_TRANSFER_MSG_DEVICE_STATUS hrErrorStatus の値が WIA_STATUS_WARMING_UP である場合、互換性レイヤーはアプリケーションに対して転送の進行状況を通知すると同時に、Windows Vista アプリに転送をキャンセルできる機会を与えるために、IT_MSG_STATUS メッセージが IT_STATUS_TRANSFER_FROM_DEVICE ステータスと併せて送信されます。
WIA_TRANSFER_MSG_NEW_PAGE 無視されます。 この場合、TYMED_FILE で Windows Vista ドライバーを呼び出すため、Windows Vista ドライバーから送信されるべきではありません。
IWiaTransferCallback::GetNextStream 最初のページ: IT_MSG_DATA_HEADER

後続のページ: IT_MSG_NEW_PAGE
IStream::Write IT_MSG_DATA

ファイル転送

次の表は、Windows Vista ドライバーのファイル転送メッセージをレガシ アプリケーションに送信されたメッセージにマッピングする方法を示しています。

Windows Vista ドライバー メッセージ レガシ アプリケーション メッセージ (互換性レイヤー変換後)
WIA_TRANSFER_MSG_STATUS IT_MSG_STATUS
WIA_TRANSFER_MSG_ERROR 無視されます。
WIA_TRANSFER_MSG_END_OF_STREAM 無視されます。 このメッセージは、IWiaTransferCallback::GetNextStream が呼び出されるたびに常に送信されます。 メッセージの重複を避けるため、このメッセージは代わりに GetNextStream の実装内で処理されます。
WIA_TRANSFER_MSG_END_OF_TRANSFER IT_MSG_TERMINATION (WIA_TRANSFER_MSG_END_OF_TRANSFER はドライバーによって送信されません)。
WIA_TRANSFER_MSG_DEVICE_STATUS hrErrorStatus の値が WIA_STATUS_WARMING_UP である場合、アプリケーションに対して転送の進行状況を通知すると同時に、Windows Vista アプリに転送をキャンセルできる機会を与えるために、IT_MSG_STATUS メッセージが IT_STATUS_TRANSFER_FROM_DEVICE ステータスと併せて送信されます。
WIA_TRANSFER_MSG_NEW_PAGE この動作は、従来のマルチページ ファイル転送とは多少異なります。これは、wiasWritePageBufToFile が IT_MSG_NEW_PAGE を送信しないためです。
IWiaTransferCallback::GetNextStream 最初のページ: IT_MSG_FILE_PREVIEW_DATA_HEADER

後続のページ: エラー (WIA_ERROR_GENERAL_ERROR がドライバーに返されます)。 IWiaTransferCallback::GetNextStream は一度しか呼び出すべきではありません。TYMED_FILE では 1 ページしか転送できないためです。また、TYMED_MULTIPAGE_FILE 転送の際も、Windows Vista ドライバーは全ページを同一ストリームに集める必要があるので、GetNextStream の呼び出しは 1 回に限定されるべきです。
IStream::Write メッセージは送信されません。 ファイル転送の場合、互換性レイヤーは、ドライバー (画像処理フィルター) がレガシ転送メッセージに書き込むデータを変換しません。 代わりに、データは単にファイルに書き込まれ、転送の終了時にユーザーに返されます。

レガシ転送メッセージの詳細については、「IWiaMiniDrvCallBack インターフェイス」を参照してください。

TYMED 定数の詳細については、「TYMED について」を参照してください。