Abbruch von Datenübertragungen in Windows Vista

Wichtig

Dieser Artikel enthält Informationen, die für veraltete Windows-Betriebssysteme gelten.

In Windows Vista gibt es eine neue Schnittstelle, IWiaTransfer (die in der Windows SDK-Dokumentation beschrieben wird), mit der Anwendungen streambasierte Datenübertragungen durchführen. Diese Schnittstelle enthält zusätzlich zu den neuen Übertragungsmethoden eine Cancel-Methode , die eine Anwendung zum Abbrechen von Datenübertragungen verwenden kann, einschließlich übertragungen mehrerer Elemente. Mit dieser Methode können Sie eine Datenübertragung asynchron abbrechen. Es wird empfohlen, dass Sie dieses Verfahren verwenden, um eine Datenübertragung abzubrechen. Eine Windows Vista-Anwendung kann jedoch auch S_FALSE aus ihrer Rückrufroutine zurückgeben, um eine Übertragung abzubrechen.

Daher gibt es zwei Möglichkeiten für eine WIA-Anwendung in Windows Vista, eine Übertragung abzubrechen:

  • Gibt S_FALSE aus der Rückrufroutine zurück.

  • Rufen Sie IWiaTransfer::Cancel auf.

Ein Windows Vista-Treiber kann auf zwei verschiedene Arten benachrichtigt werden, dass die Anwendung die Übertragung abgebrochen hat:

  • Der Treiber empfängt einen Aufruf seines IWiaMiniDrv::d rvNotifyPnPEvent mit einem WIA_EVENT_CANCEL_IO-Ereignis. Es wird empfohlen, dass alle Lese- oder Schreibvorgänge im Kernelmodus ÜBERLAPPENDE E/A verwenden. Nur mit diesem Verfahren können Sie eine sofortige Stornierung garantieren.

  • S_FALSE wird von zwei Rückruffunktionen zurückgegeben: IWiaMiniDrvTransferCallback::GetNextStream und IWiaMiniDrvTransferCallback::SendMessage.

Wenn eine Anwendung IWiaTransfer::Cancel aufruft, sollte die IWiaMiniDrv::d rvNotifyPnPEvent-Methode mit WIA_EVENT_CANCEL_IO in den Treiber aufgerufen werden. Darüber hinaus müssen die IWiaMiniDrvTransferCallback::GetNextStream - und IWiaMiniDrvTransferCallback::SendMessage-Rückruffunktionen immer S_FALSE zurückgeben, nachdem die Übertragung abgebrochen wurde.

Wenn IWiaTransferCallback::GetNextStream während einer Übertragung mit mehreren Elementen WIA_STATUS_SKIP_ITEM zurückgibt, überspringt eine Anwendung das aktuelle Element (d. h. nicht). Ein Rückgabewert von S_FALSE bedeutet weiterhin, dass die gesamte Übertragung abgebrochen werden sollte.

Die IWiaTransfer- und IWiaTransferCallback-Schnittstellen werden in der Microsoft Windows SDK-Dokumentation beschrieben.

IWiaMiniDrvTransferCallback