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) |