Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
[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) |