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

BuildScatterGatherListEx

DMA_ADAPTER

DMA_OPERATIONS

FlushAdapterBuffers

GetScatterGatherListEx

IoGetDmaAdapter

MapTransferEx