Freigeben über


WdfDmaTransactionCancel-Funktion (wdfdmatransaction.h)

[Gilt nur für KMDF]

Die WdfDmaTransactionCancel-Methode versucht, eine DMA-Transaktion abzubrechen, die auf die Zuordnung von Kartenregistern wartet.

Syntax

BOOLEAN WdfDmaTransactionCancel(
  [in] WDFDMATRANSACTION DmaTransaction
);

Parameter

[in] DmaTransaction

Ein Handle für das DMA-Transaktionsobjekt, das die Transaktion darstellt, die abgebrochen wird. Diese Transaktion muss bereits vom Treiber initialisiert worden sein.

Rückgabewert

WdfDmaTransactionCancel gibt TRUE zurück, wenn das Framework die Zuordnungsregisterzuordnung erfolgreich abbricht. In diesem Fall werden keine Übertragungen abgeschlossen, und das Framework führt keine zusätzlichen DMA-Rückrufe für die Transaktion aus, bis sie erneut initiiert wird.

Die -Methode gibt FALSE zurück, wenn bereits ein anderer Thread diese Transaktion verarbeitet oder der Treiber WdfDmaTransactionExecute noch nicht aufgerufen hat. Im ersten Fall ruft das Framework derzeit EvtProgramDma oder EvtReserveDma auf. An diesem Punkt kann ein Treiber, der ein DMA-Profil im Systemmodus angegeben hat, WdfDmaTransactionStopSystemTransfer aufrufen.

Die -Methode gibt auch FALSE zurück, wenn sie mit einer Transaktion aufgerufen wird, die von einem DMA-Enabler der Version 2 zugeordnet wurde.

Hinweise

Der Treiber kann WdfDmaTransactionCancel aus einer EvtRequestCancel-Ereignisrückruffunktion aufrufen, die er in einem Aufruf von WdfRequestMarkCancelableEx bereitstellt. Ein Codebeispiel, das dies veranschaulicht, finden Sie unter WdfDmaTransactionStopSystemTransfer.

Der Treiber kann auch WdfDmaTransactionCancel aus einer EvtIoCanceledOnQueue-Ereignisrückruffunktion aufrufen.

Der Abbruch kann nur erfolgreich sein, wenn der Aufruf von WdfDmaTransactionCancel nach dem Aufruf von WdfDmaTransactionExecute erfolgt, aber bevor die WdfDmaTransactionExecute-Methode die DMA-Zuordnung gestartet hat. Weitere Informationen finden Sie unter Abbrechen von DMA-Transaktionen.

Der Treiber muss WdfDmaTransactionCancel aufrufen, nachdem WdfDmaTransactionInitialize aufgerufen wurde, aber vor dem Aufruf von WdfDmaTransactionRelease oder WdfObjectDelete , um das Transaktionsobjekt zu löschen.

Rufen Sie WdfDmaTransactionCancel nicht auf, nachdem das Framework EvtProgramDma oder EvtReserveDma aufgerufen hat.

Ein Treiber muss die Verwendung von DMA Version 3 anfordern, bevor WdfDmaTransactionCancel aufgerufen wird. Um DMA-Version 3 auszuwählen, legen Sie das WdmDmaVersionOverride-Element von WDF_DMA_ENABLER_CONFIG auf 3 fest.

Wenn ein Treiber WdfDmaTransactionCancel für eine Transaktion aufruft, die von einem DMA-Enabler der Version 2 zugeordnet wurde, generiert das Framework einen Überprüfungsfehler, und WdfDmaTransactionCancel gibt FALSE zurück. In diesem Fall wird nicht versucht, die Transaktion abzubrechen.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 8
Zielplattform Universell
KMDF-Mindestversion 1.11
Kopfzeile wdfdmatransaction.h (include Wdf.h)
Bibliothek Wdf01000.sys (siehe Versionsverwaltung der Frameworkbibliothek).)
IRQL <=DISPATCH_LEVEL
DDI-Complianceregeln DriverCreate(kmdf)

Weitere Informationen

EvtProgramDma

EvtReserveDma

WdfDmaTransactionStopSystemTransfer