Partager via


PFLUSH_ADAPTER_BUFFERS_EX fonction de rappel (wdm.h)

Le FlushAdapterBuffersEx la routine vide toutes les données qui restent dans le cache de données à la fin d’une opération de transfert DMA effectuée par un contrôleur DMA système ou un appareil maître de bus.

Syntaxe

PFLUSH_ADAPTER_BUFFERS_EX PflushAdapterBuffersEx;

NTSTATUS PflushAdapterBuffersEx(
  [in] PDMA_ADAPTER DmaAdapter,
  [in] PMDL Mdl,
  [in] PVOID MapRegisterBase,
  [in] ULONGLONG Offset,
  [in] ULONG Length,
  [in] BOOLEAN WriteToDevice
)
{...}

Paramètres

[in] DmaAdapter

Pointeur vers une structure DMA_ADAPTER. Cette structure est l’objet adaptateur qui représente le canal DMA système du pilote ou le périphérique bus-master. L’appelant a obtenu ce pointeur à partir d’un appel précédent à la routine IoGetDmaAdapter.

[in] Mdl

Pointeur vers la chaîne MDL qui décrit les pages de mémoire à vider. Définissez ce paramètre pour pointer vers la chaîne MDL utilisée pour le transfert DMA. Pour plus d’informations, consultez la description du paramètre Mdl dans GetScatterGatherListEx, BuildScatterGatherListExou MapTransferEx.

[in] MapRegisterBase

Handle pour les registres cartographiques qui ont été précédemment alloués pour l’objet adaptateur.

[in] Offset

Décalage de départ relatif au début de la chaîne MDL à utiliser pour l’opération de vidage. Définissez ce paramètre sur la valeur utilisée comme décalage de départ pour le transfert DMA. Pour plus d’informations, consultez la description du paramètre Offset dans GetScatterGatherListEx, BuildScatterGatherListExou MapTransferEx.

[in] Length

Nombre d’octets de données à vider. Définissez ce paramètre sur la valeur utilisée comme longueur de transfert pour le transfert DMA. Pour plus d’informations, consultez la description du paramètre Length dans GetScatterGatherListEx, BuildScatterGatherListExou MapTransferEx.

[in] WriteToDevice

Direction du transfert DMA. Définissez ce paramètre sur la valeur utilisée comme direction de transfert pour le transfert DMA. Pour plus d’informations, consultez la description du paramètre WriteToDevice dans GetScatterGatherListEx, BuildScatterGatherListExou MapTransferEx.

Valeur de retour

FlushAdapterBuffersEx retourne STATUS_SUCCESS si l’appel réussit. Les valeurs de retour d’erreur possibles incluent les codes d’état suivants.

Retourner le code Description
STATUS_INVALID_PARAMETERS
La routine a échoué en raison de valeurs de paramètre non valides passées par l’appelant.

Remarques

FlushAdapterBuffersEx n’est pas une routine système qui peut être appelée directement par nom. Cette routine peut être appelée uniquement par le pointeur de l’adresse retournée dans une structure DMA_OPERATIONS. Pilotes obtiennent l’adresse de cette routine en appelant IoGetDmaAdapter avec le membre version du paramètre DeviceDes cription défini sur DEVICE_DESCRIPTION_VERSION3. Si IoGetDmaAdapter retourne NULL, la routine n’est pas disponible sur votre plateforme.

FlushAdapterBuffersEx active la cohérence du cache du processeur dans les plateformes matérielles qui n’implémentent pas la cohérence du cache appliquée au matériel (enregistrement de bus). En outre, pour un transfert DMA système, FlushAdapterBuffersEx vide toutes les données qui restent dans le cache interne du contrôleur DMA système.

Le pilote qui lance un transfert DMA de nuages/de points doit s’assurer que toutes les données transférées sont vidées du cache une fois le transfert terminé. Le pilote doit appeler FlushAdapterBuffersEx avant que le pilote ne termine l’IRP qui a demandé le transfert DMA et avant que le pilote libère les registres de carte. Pour plus d’informations, consultez Vidage des données mises en cache pendant les opérations DMA.

FlushAdapterBuffersEx est une version étendue de la routine FlushAdapterBuffers. FlushAdapterBuffersEx peut vider une liste de nuages de points/regroupements dans un appel. En revanche, pour utiliser FlushAdapterBuffers pour vider une liste de nuages de points/collectes nécessite un appel distinct pour chaque MDL dans la chaîne MDL.

FlushAdapterBuffersEx pouvez être utilisé à la place de FlushAdapterBuffers pour vider la mémoire tampon pour un transfert DMA à un paquet. Dans ce cas, la chaîne MDL que la mdl points de paramètre ne contient qu’un seul MDL. L’utilisation de FlushAdapterBuffersEx de cette façon est que l’appelant peut spécifier un décalage dans le MDL.

Si FlushAdapterBuffersEx est appelée avant la fin de l’opération de transfert DMA, cet appel peut annuler le transfert avant de pouvoir terminer ou provoquer un comportement non défini.

Exigences

Exigence Valeur
client minimum pris en charge Disponible à partir de Windows 8.
plateforme cible Bureau
d’en-tête wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
IRQL <= DISPATCH_LEVEL

Voir aussi

BuildScatterGatherListEx

DMA_ADAPTER

DMA_OPERATIONS

FlushAdapterBuffers

GetScatterGatherListEx

IoGetDmaAdapter

mapTransferEx