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

Sur certaines plateformes, les caches d’instructions et de données dans le processeur présentent des anomalies de cohérence du cache pendant les opérations de lecture PIO.

Note Pour maintenir l’intégrité des données pendant leurs opérations de lecture, les pilotes qui utilisent PIO doivent suivre les instructions suivantes : appelez KeFlushIoBuffers à la fin de chaque opération de lecture.

Par exemple, un pilote effectuant un transfert PIO de son appareil vers la mémoire système doit appeler KeFlushIoBuffers à la fin de chaque opération de transfert d’appareil. Par exemple, un pilote qui lit une séquence de registres d’appareils dans la mémoire système doit appeler KeFlushIoBuffers à la fin de la séquence. Sinon, un tel pilote peut tenter d’accéder aux données qui se trouve toujours dans le cache de données du processeur, plutôt que dans la mémoire système, sur certaines plateformes.

KeFlushIoBuffers ne fait rien si le processeur peut être utilisé pour maintenir la cohérence du cache. Par conséquent, les appels à cette routine de support n’ont presque pas de surcharge dans une telle plateforme.