Partager via


KeFlushIoBuffers, fonction (wdm.h)

Le KeFlushIoBuffers routine vide la région de mémoire décrite par un MDL à partir de caches de tous les processeurs.

Syntaxe

void KeFlushIoBuffers(
  [in] PMDL    Mdl,
  [in] BOOLEAN ReadOperation,
  [in] BOOLEAN DmaOperation
);

Paramètres

[in] Mdl

Pointeur vers un MDL qui décrit la plage de la mémoire tampon d’E/S.

[in] ReadOperation

Spécifie TRUE si le vidage est effectué pour une opération de lecture et FALSE pour une opération d’écriture. Pour plus d’informations, consultez la section Remarques suivante.

[in] DmaOperation

Spécifie TRUE pour un transfert DMA, FAUX pour l’authentification personnelle.

Valeur de retour

Aucun

Remarques

Les pilotes appellent KeFlushIoBuffers pour maintenir l’intégrité des données pendant les opérations de transfert de périphériques DMA ou PIO. L’appel de cette routine affecte tous les processeurs de la machine.

Si ReadOperation est TRUE, le pilote lit les informations de l’appareil à la mémoire système, de sorte que les données valides peuvent toujours se trouver dans les caches d’instructions et de données du processeur. KeFlushIoBuffers vide les données de tous les caches de tous les processeurs vers la mémoire système, y compris le processeur sur lequel l’appelant s’exécute.

Si ReadOperation est FAUX, le pilote écrit des données de la mémoire système vers un appareil, de sorte que les données valides peuvent se trouver dans le cache de données du processeur, mais pas encore transférées vers l’appareil. KeFlushIoBuffers vide tous les caches de données de tous les processeurs, y compris celui du processeur sur lequel l’appelant s’exécute.

En règle générale, les pilotes doivent appeler KeFlushIoBuffers juste avant de commencer une opération de transfert DMA ou immédiatement après toute opération de lecture PIO.

KeFlushIoBuffers vide uniquement la région de mémoire décrite par le MDL vers laquelle pointe le paramètre Mdl. Pour vider toutes les régions de mémoire décrites par une chaîne MDL, vous devez disposer d’un KeFlushIoBuffers distinct appel pour chaque MDL de la chaîne.

Pour plus d’informations, consultez les rubriques suivantes :

Vidage des données mises en cache pendant les opérations DMAVidage des données mises en cache pendant les opérations PIO

Exigences

Exigence Valeur
client minimum pris en charge Disponible à partir de Windows 2000.
plateforme cible Universel
d’en-tête wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
bibliothèque NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= DISPATCH_LEVEL
règles de conformité DDI mdlAfterReqCompletedIntIoctlA(kmdf), MdlAfterReqCompletedIoctlA(kmdf), MdlAfterReqCompletedReadA(kmdf), MdlAfterReqCompletedWriteA(kmdf)

Voir aussi

FlushAdapterBuffers