Partager via


WdfDmaTransactionCancel, fonction (wdfdmatransaction.h)

[S’applique uniquement à KMDF]

La méthode WdfDmaTransactionCancel tente d’annuler une transaction DMA qui attend l’allocation des registres de carte.

Syntaxe

BOOLEAN WdfDmaTransactionCancel(
  [in] WDFDMATRANSACTION DmaTransaction
);

Paramètres

[in] DmaTransaction

Handle de l’objet de transaction DMA qui représente la transaction en cours d’annulation. Cette transaction doit avoir déjà été initialisée par le pilote.

Valeur retournée

WdfDmaTransactionCancel retourne TRUE si l’infrastructure annule correctement l’allocation de registre de carte. Dans ce cas, aucun transfert n’est effectué et l’infrastructure n’effectue aucun rappel DMA supplémentaire sur la transaction tant qu’elle n’est pas réinitialisée.

La méthode retourne FALSE si un autre thread traite déjà cette transaction, ou si le pilote n’a pas encore appelé WdfDmaTransactionExecute. Dans le premier cas, l’infrastructure appelle actuellement Ou appelleRa EvtProgramDma ou EvtReserveDma. À ce stade, un pilote qui a spécifié un profil DMA en mode système peut appeler WdfDmaTransactionStopSystemTransfer.

La méthode retourne également FALSE si elle est appelée avec une transaction qui a été allouée à partir d’un enabler DMA version 2.

Remarques

Le pilote peut appeler WdfDmaTransactionCancel à partir d’une fonction de rappel d’événement EvtRequestCancel qu’il fournit dans un appel à WdfRequestMarkCancelableEx. Pour obtenir un exemple de code qui montre comment procéder, consultez WdfDmaTransactionStopSystemTransfer.

Le pilote peut également appeler WdfDmaTransactionCancel à partir d’une fonction de rappel d’événement EvtIoCanceledOnQueue .

L’annulation ne peut réussir que si l’appel à WdfDmaTransactionCancel se produit après l’appel à WdfDmaTransactionExecute, mais avant que la méthode WdfDmaTransactionExecute ait démarré l’allocation DMA. Pour plus d’informations, consultez Annulation des transactions DMA.

Le pilote doit appeler WdfDmaTransactionCancel après avoir appelé WdfDmaTransactionInitialize, mais avant d’appeler WdfDmaTransactionRelease ou WdfObjectDelete pour supprimer l’objet de transaction.

N’appelez pas WdfDmaTransactionCancel après que l’infrastructure a appelé EvtProgramDma ou EvtReserveDma.

Un pilote doit demander l’utilisation de DMA version 3 avant d’appeler WdfDmaTransactionCancel. Pour sélectionner DMA version 3, définissez le membre WdmDmaVersionOverride de WDF_DMA_ENABLER_CONFIG sur 3.

Si un pilote appelle WdfDmaTransactionCancel sur une transaction qui a été allouée à partir d’un enabler DMA version 2, l’infrastructure génère une erreur de vérificateur et WdfDmaTransactionCancel retourne FALSE. Dans ce cas, aucune tentative d’annulation de la transaction n’est effectuée.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 8
Plateforme cible Universal
Version KMDF minimale 1.11
En-tête wdfdmatransaction.h (inclure Wdf.h)
Bibliothèque Wdf01000.sys (consultez Gestion de version de la bibliothèque d’infrastructure.)
IRQL <=DISPATCH_LEVEL
Règles de conformité DDI DriverCreate(kmdf)

Voir aussi

EvtProgramDma

EvtReserveDma

WdfDmaTransactionStopSystemTransfer