在 Windows Vista 中取消數據傳輸
重要
本文包含適用於過時 Windows 作業系統的資訊。
在 Windows Vista 中,有新的介面 IWiaTransfer (,如 Windows SDK 檔所述,) 應用程式用來執行串流式數據傳輸。 除了新的傳輸方法之外,這個介面還包含 一個 Cancel 方法,應用程式可用來取消數據傳輸,包括 多項目傳輸。 使用此方法,您可以異步取消數據傳輸。 建議您使用此程式來取消資料傳輸。 不過,Windows Vista 應用程式也可以從其回呼例程傳回S_FALSE,以取消傳輸。
因此,Windows Vista 中的 WIA 應用程式有兩種方式可取消傳輸:
從其回呼例程傳回S_FALSE。
呼叫 IWiaTransfer::Cancel。
Windows Vista 驅動程式可以透過兩種不同的方式通知應用程式已取消傳輸:
驅動程式收到其 IWiaMiniDrv::d rvNotifyPnPEvent 與WIA_EVENT_CANCEL_IO事件的呼叫。 我們建議所有內核模式讀取或寫入作業都使用重疊 I/O。 只有使用此程式,您才能保證 立即 取消。
S_FALSE從兩個回呼函式傳回: IWiaMiniDrvTransferCallback::GetNextStream 和 IWiaMiniDrvTransferCallback::SendMessage。
當應用程式呼叫 IWiaTransfer::Cancel 時,應該使用 WIA_EVENT_CANCEL_IO 呼叫驅動程式中的 IWiaMiniDrv::d rvNotifyPnPEvent 方法。 此外, IWiaMiniDrvTransferCallback::GetNextStream 和 IWiaMiniDrvTransferCallback::SendMessage 回呼函式必須一律在取消傳輸之後傳回S_FALSE。
如果 IWiaTransferCallback::GetNextStream 在 多專案傳輸期間傳回WIA_STATUS_SKIP_ITEM,則應用程式會略過 (也就是說,不會傳送) 目前的專案。 傳回值S_FALSE仍然表示應該取消整個傳輸。
Microsoft Windows SDK 檔中會說明 IWiaTransfer 和 IWiaTransferCallback 介面。