Fungsi KeFlushIoBuffers (wdm.h)
KeFlushIoBuffers rutin membersihkan wilayah memori yang dijelaskan oleh MDL dari cache semua prosesor.
Sintaks
void KeFlushIoBuffers(
[in] PMDL Mdl,
[in] BOOLEAN ReadOperation,
[in] BOOLEAN DmaOperation
);
Parameter
[in] Mdl
Penunjuk ke MDL yang menjelaskan rentang untuk buffer I/O.
[in] ReadOperation
Menentukan TRUE jika flush sedang dilakukan untuk operasi baca, dan FALSE untuk operasi tulis. Untuk informasi selengkapnya, lihat bagian Keterangan berikut ini.
[in] DmaOperation
Menentukan TRUE untuk transfer DMA, FALSE untuk PIO.
Nilai kembali
Tidak ada
Keterangan
Driver memanggil KeFlushIoBuffers untuk menjaga integritas data selama operasi transfer perangkat DMA atau PIO. Memanggil rutinitas ini mempengaruhi semua prosesor di komputer.
Jika ReadOperationTRUE, driver membaca informasi dari perangkat ke memori sistem, sehingga data yang valid mungkin masih ada dalam instruksi prosesor dan cache data. KeFlushIoBuffers menghapus data dari semua cache prosesor ke memori sistem, termasuk prosesor tempat pemanggil berjalan.
Jika ReadOperationFALSE, driver menulis data dari memori sistem ke perangkat, sehingga data yang valid mungkin berada di cache data prosesor tetapi belum ditransfer ke perangkat. KeFlushIoBuffers membersihkan semua cache data prosesor, termasuk prosesor tempat pemanggil berjalan.
Sebagai aturan umum, driver harus memanggil KeFlushIoBuffers tepat sebelum memulai operasi transfer DMA atau segera mengikuti operasi baca PIO apa pun.
KeFlushIoBuffers hanya membersihkan wilayah memori yang dijelaskan oleh MDL yang dirujuk parameter Mdl . Untuk membersihkan semua wilayah memori yang dijelaskan oleh rantai MDL memerlukan panggilan KeFlushIoBuffers terpisah untuk setiap MDL dalam rantai.
Untuk informasi selengkapnya, lihat topik berikut:
Membilas Data Cache selama Operasi DMAMembersihkan Data Cache selama Operasi PIO
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Tersedia dimulai dengan Windows 2000. |
Target Platform | Universal |
Header | wdm.h (termasuk Wdm.h, Ntddk.h, Ntifs.h) |
Pustaka | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= DISPATCH_LEVEL |
Aturan kepatuhan DDI | MdlAfterReqCompletedIntIoctlA(kmdf), MdlAfterReqCompletedIoctlA(kmdf), MdlAfterReqCompletedReadA(kmdf), MdlAfterReqCompletedWriteA(kmdf) |