旧版应用程序和 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,则兼容性层使用 IT_STATUS_TRANSFER_FROM_DEVICE 发送IT_MSG_STATUS,以便为应用程序提供一些状态,并让 Windows Vista 应用程序能够取消传输。
WIA_TRANSFER_MSG_NEW_PAGE 已忽略。 在这种情况下,不应由 Windows Vista 驱动程序发送,因为我们使用TYMED_FILE调用 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,则会使用 IT_STATUS_TRANSFER_FROM_DEVICE 发送IT_MSG_STATUS,以便为应用程序提供某种状态,并让 Windows Vista 应用程序能够取消传输。
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传输一个页面,在TYMED_MULTIPAGE_FILE传输期间,Windows Vista 驱动程序应只调用 一次 GetNextStream ,因为所有页面都应进入同一流。
IStream::Write 未发送任何消息。 在文件传输中,兼容性层不会将驱动程序 (图像处理筛选器) 写入旧传输消息的任何数据转换。 相反,数据只是写入文件,该文件在传输结束时返回给用户。

有关旧传输消息的详细信息,请参阅 IWiaMiniDrvCallBack 接口

有关 TYMED 常量的详细信息,请参阅 了解 TYMED