PFLUSH_ADAPTER_BUFFERS_EX fungsi panggilan balik (wdm.h)
FlushAdapterBuffersEx rutin membersihkan data apa pun yang tetap berada di cache data di akhir operasi transfer DMA yang dilakukan oleh pengontrol DMA sistem atau perangkat master bus.
Sintaks
PFLUSH_ADAPTER_BUFFERS_EX PflushAdapterBuffersEx;
NTSTATUS PflushAdapterBuffersEx(
[in] PDMA_ADAPTER DmaAdapter,
[in] PMDL Mdl,
[in] PVOID MapRegisterBase,
[in] ULONGLONG Offset,
[in] ULONG Length,
[in] BOOLEAN WriteToDevice
)
{...}
Parameter
[in] DmaAdapter
Penunjuk ke struktur DMA_ADAPTER . Struktur ini adalah objek adaptor yang mewakili saluran DMA sistem driver atau perangkat master bus. Penelepon memperoleh pointer ini dari panggilan sebelumnya ke rutinitas IoGetDmaAdapter .
[in] Mdl
Penunjuk ke rantai MDL yang menjelaskan halaman memori yang akan dibersihkan. Atur parameter ini untuk menunjuk ke rantai MDL yang digunakan untuk transfer DMA. Untuk informasi selengkapnya, lihat deskripsi parameter Mdl di GetScatterGatherListEx, BuildScatterGatherListEx, atau MapTransferEx.
[in] MapRegisterBase
Handel ke register peta yang sebelumnya dialokasikan untuk objek adaptor.
[in] Offset
Offset awal relatif terhadap awal rantai MDL yang digunakan untuk operasi flush. Atur parameter ini ke nilai yang digunakan sebagai offset awal untuk transfer DMA. Untuk informasi selengkapnya, lihat deskripsi parameter Offset di GetScatterGatherListEx, BuildScatterGatherListEx, atau MapTransferEx.
[in] Length
Jumlah byte data yang akan dibersihkan. Atur parameter ini ke nilai yang digunakan sebagai panjang transfer untuk transfer DMA. Untuk informasi selengkapnya, lihat deskripsi parameter Panjang di GetScatterGatherListEx, BuildScatterGatherListEx, atau MapTransferEx.
[in] WriteToDevice
Arah transfer DMA. Atur parameter ini ke nilai yang digunakan sebagai arah transfer untuk transfer DMA. Untuk informasi selengkapnya, lihat deskripsi parameter WriteToDevice di GetScatterGatherListEx, BuildScatterGatherListEx, atau MapTransferEx.
Nilai kembali
FlushAdapterBuffersEx mengembalikan STATUS_SUCCESS jika panggilan berhasil. Kemungkinan nilai pengembalian kesalahan mencakup kode status berikut.
Menampilkan kode | Deskripsi |
---|---|
|
Rutinitas gagal karena nilai parameter yang tidak valid yang diteruskan oleh pemanggil. |
Keterangan
FlushAdapterBuffersEx bukanlah rutinitas sistem yang dapat dipanggil langsung berdasarkan nama. Rutinitas ini hanya dapat dipanggil dengan penunjuk dari alamat yang dikembalikan dalam struktur DMA_OPERATIONS. Driver mendapatkan alamat rutin ini dengan memanggil IoGetDmaAdapter dengan anggota Versi parameter DeviceDescription diatur ke DEVICE_DESCRIPTION_VERSION3. Jika IoGetDmaAdapter mengembalikan NULL, rutinitas tidak tersedia di platform Anda.
FlushAdapterBuffersEx memungkinkan koherensi cache prosesor di platform perangkat keras yang tidak menerapkan koherensi cache yang diberlakukan perangkat keras (pengintaian bus). Selain itu, untuk transfer DMA sistem, FlushAdapterBuffersEx membersihkan data apa pun yang tetap ada di cache internal pengontrol DMA sistem.
Driver yang memulai transfer DMA sebar/kumpulkan harus memastikan bahwa semua data yang ditransfer dihapus dari cache setelah transfer selesai. Driver harus memanggil FlushAdapterBuffersEx sebelum driver menyelesaikan IRP yang meminta transfer DMA, dan sebelum driver membebaskan register peta. Untuk informasi selengkapnya, lihat Menghapus Data Cache selama Operasi DMA.
FlushAdapterBuffersEx adalah versi yang diperluas dari rutinitas FlushAdapterBuffers . FlushAdapterBuffersEx dapat membersihkan seluruh daftar sebar/kumpulkan dalam satu panggilan. Sebaliknya, untuk menggunakan FlushAdapterBuffers untuk membersihkan daftar sebar/kumpulkan memerlukan panggilan terpisah untuk setiap MDL dalam rantai MDL.
FlushAdapterBuffersEx dapat digunakan sebagai pengganti FlushAdapterBuffers untuk membersihkan buffer untuk transfer DMA satu paket. Dalam hal ini, rantai MDL yang ditujukan parameter Mdl hanya berisi satu MDL. Manfaat menggunakan FlushAdapterBuffersEx dengan cara ini adalah pemanggil dapat menentukan offset ke dalam MDL.
Jika FlushAdapterBuffersEx dipanggil sebelum operasi transfer DMA selesai, panggilan ini mungkin membatalkan transfer sebelum dapat selesai atau dapat menyebabkan perilaku yang tidak terdefinisi.
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Tersedia dimulai dengan Windows 8. |
Target Platform | Desktop |
Header | wdm.h (termasuk Wdm.h, Ntddk.h, Ntifs.h) |
IRQL | <= DISPATCH_LEVEL |
Lihat juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk