KeFlushIoBuffers, fonction (wdm.h)

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

Syntaxe

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

Paramètres

[in] Mdl

Pointeur vers une 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 Notes qui suit.

[in] DmaOperation

Spécifie TRUE pour un transfert DMA, FALSE pour PIO.

Valeur de retour

None

Remarques

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

Si ReadOperation a la valeur TRUE, le pilote lit les informations de l’appareil vers 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 des caches de tous les processeurs vers la mémoire système, y compris le processeur sur lequel l’appelant s’exécute.

Si ReadOperation a la valeur FALSE, le pilote écrit des données de la mémoire système sur un appareil. Les données valides peuvent donc 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 des 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, un appel KeFlushIoBuffers distinct pour chaque MDL de la chaîne nécessite un appel KeFlushIoBuffers distinct.

Pour plus d'informations, voir 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

Configuration requise

Condition requise Valeur
Client minimal pris en charge Disponible à partir de Windows 2000.
Plateforme cible Universal
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