Partager via


WdfDmaTransactionDmaCompletedFinal, fonction (wdfdmatransaction.h)

[S’applique uniquement à KMDF]

La méthode WdfDmaTransactionDmaCompletedFinal informe l’infrastructure que l’opération de transfert DMA d’un appareil s’est terminée avec une condition d’exécution insuffisante et fournit la longueur du transfert terminé.

Syntaxe

BOOLEAN WdfDmaTransactionDmaCompletedFinal(
  [in]  WDFDMATRANSACTION DmaTransaction,
  [in]  size_t            FinalTransferredLength,
  [out] NTSTATUS          *Status
);

Paramètres

[in] DmaTransaction

Handle vers un objet de transaction DMA que le pilote a obtenu à partir d’un appel précédent à WdfDmaTransactionCreate.

[in] FinalTransferredLength

Nombre d’octets transférés par l’appareil.

[out] Status

Pointeur vers un emplacement qui reçoit l’état du transfert DMA. Pour plus d’informations, consultez la section Notes pour WdfDmaTransactionDmaCompleted.

Valeur de retour

WdfDmaTransactionDmaCompletedFinal retourne FAUX si le pilote fournit un paramètre d’entrée non valide. Sinon, WdfDmaTransactionDmaCompletedFinal retourne toujours TRUE, ce qui indique que l’infrastructure ne tentera pas de transférer plus d’octets pour la transaction DMA que le paramètre DmaTransaction spécifié.

Une vérification de bogue se produit si le pilote fournit un handle d’objet non valide.

Remarques

Un pilote appelle généralement WdfDmaTransactionDmaCompletedFinal à partir de son rappel EvtInterruptDpc. Un pilote pour un périphérique DMA en mode système peut appeler WdfDmaTransactionDmaCompletedFinal à partir d’une fonction de rappel d’événement evtDmaTransactionDmaTransferComplete .

Dans l’exemple PLX9x5x, le pilote appelle WdfDmaTransactionDmaCompletedFinal à partir de sa fonction de rappel EvtProgramDma.

La méthode WdfDmaTransactionDmaCompletedFinal se comporte de la même façon que WdfDmaTransactionDmaCompleted, sauf que les pilotes appellent généralement WdfDmaTransactionDmaCompletedFinal si le matériel signale une condition de sous-exécution. Une condition de sous-exécution signifie que le matériel n’a pas pu transférer tous les octets spécifiés pour le dernier transfert DMA. Un appel à WdfDmaTransactionDmaCompletedFinal empêche l’infrastructure de démarrer d’autres transferts DMA pour la transaction DMA spécifiée.

Lorsque votre pilote appelle WdfDmaTransactionDmaCompletedFinal, le pilote fournit le nombre d’octets transférés. La valeur de retour est toujours TRUE, car l’infrastructure ne tente pas de transférer plus d’octets pour la transaction spécifiée.

Pour plus d’informations sur la fin des transferts DMA, consultez Fin d’unde transfert DMA.

Exemples

L’exemple de code suivant informe l’infrastructure que l’opération de transfert DMA d’un appareil s’est terminée avec une condition de sous-exécution.

BOOLEAN  success;
NTSTATUS  status;

success = WdfDmaTransactionDmaCompletedFinal(
                                             DmaTransaction,
                                             transferLength,
                                             &status
                                             );

Spécifications

Besoin Valeur
plateforme cible Universel
version minimale de KMDF 1.0
En-tête wdfdmatransaction.h (include Wdf.h)
Bibliothèque Wdf01000.sys (voir Versioning de la bibliothèque Framework.)
IRQL <=DISPATCH_LEVEL
règles de conformité DDI DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

Voir aussi

WdfDmaTransactionCreate

WdfDmaTransactionDmaCompleted

WdfDmaTransactionDmaCompletedWithLength