取消 Windows Vista 中的数据传输

重要

本文包含适用于已过时 Windows 操作系统的信息。

在 Windows Vista 中,有一个新接口 IWiaTransfer (在应用程序用于执行基于流的数据传输的 Windows SDK 文档) 中所述。 除了新的传输方法外,此接口还包含 一个 Cancel 方法,应用程序可以使用该方法取消数据传输,包括 多项传输。 使用此方法,可以异步取消数据传输。 建议使用此过程来取消数据传输。 但是,Windows Vista 应用程序也可以从其回调例程返回S_FALSE以取消传输。

因此,Windows Vista 中的 WIA 应用程序可通过两种方式取消传输:

  • 从其回调例程返回S_FALSE。

  • 调用 IWiaTransfer::Cancel

可以通过两种不同的方式通知 Windows Vista 驱动程序,告知应用程序已取消传输:

当应用程序调用 IWiaTransfer::Cancel 时,应使用 WIA_EVENT_CANCEL_IO 调用 IWiaMiniDrv::d rvNotifyPnPEvent 方法。 此外, IWiaMiniDrvTransferCallback::GetNextStreamIWiaMiniDrvTransferCallback::SendMessage 回调函数必须在取消传输后始终返回S_FALSE。

如果 IWiaTransferCallback::GetNextStream多项目传输期间返回WIA_STATUS_SKIP_ITEM,则应用程序将跳过 (即不传输当前项) 。 返回值S_FALSE仍意味着应取消整个传输。

Microsoft Windows SDK文档中介绍了 IWiaTransferIWiaTransferCallback 接口。

IWiaMiniDrvTransferCallback