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) |