Bagikan melalui


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)

Lihat juga

FlushAdapterBuffers