Fungsi FltGetSwappedBufferMdlAddress (fltkernel.h)

Rutinitas FltGetSwappedBufferMdlAddress mengembalikan alamat daftar deskriptor memori (MDL) untuk buffer yang ditukar oleh driver minifilter.

Sintaks

PMDL FltGetSwappedBufferMdlAddress(
  [in] PFLT_CALLBACK_DATA CallbackData
);

Parameter

[in] CallbackData

Arahkan ke struktur data panggilan balik untuk operasi.

Nilai kembali

FltGetSwappedBufferMdlAddress mengembalikan alamat MDL untuk buffer yang ditukar oleh pemanggil. FltGetSwappedBufferMdlAddress mengembalikan NULL dalam kasus berikut:

  • Operasi ini adalah operasi I/O yang cepat. Dalam operasi I/O yang cepat, buffer tidak dapat memiliki MDL.
  • Buffer yang ditukar oleh pemanggil tidak memiliki MDL.
  • Driver minifilter tidak menukar buffer dalam rutinitas panggilan balik praoperasi.

Keterangan

Driver minifilter yang bertukar di buffer baru dalam rutinitas panggilan balik praoperasi bisa mendapatkan alamat MDL untuk buffer dengan memanggil FltGetSwappedBufferMdlAddress dari rutinitas panggilan balik pascaoperasi yang sesuai.

Rutinitas FltGetSwappedBufferMdlAddress diperlukan karena rutinitas panggilan balik pascaoperasi menerima struktur data panggilan balik yang berisi buffer asli dan alamat MDL, bukan yang ditukar oleh rutinitas panggilan balik praoperasi penelepon.

Dimungkinkan bagi FltGetSwappedBufferMdlAddress untuk mengembalikan nilai MDL non-NULL meskipun pemanggil tidak membuat MDL untuk buffer tempatnya ditukar. Ini terjadi ketika MDL dibuat untuk buffer oleh driver minifilter, driver filter warisan, atau driver sistem file yang berada di bawah pemanggil di driver minifilter atau tumpukan driver sistem file.

Dimungkinkan juga bagi FltGetSwappedBufferMdlAddress untuk mengembalikan nilai MDL non-NULL bahkan jika pemanggil tidak bertukar di buffer baru dalam rutinitas panggilan balik praoperasinya. Ini terjadi dalam operasi, seperti Paging I/O, di mana buffer adalah NULL, dan pemanggil bertukar di alamat MDL baru.

MDL untuk buffer yang ditukar oleh pemanggil secara otomatis dikosongkan oleh Manajer Filter ketika rutinitas panggilan balik pascaoperasi kembali. Untuk mencegah MDL ini dikosongkan, panggil FltRetainSwappedBufferMdlAddress.

FltGetSwappedBufferMdlAddress hanya dapat dipanggil dari rutinitas panggilan balik pascaoperasi.

Persyaratan

Persyaratan Nilai
Target Platform Universal
Header fltkernel.h (termasuk Fltkernel.h)
Pustaka FltMgr.lib
DLL Fltmgr.sys
IRQL Tingkat apa pun

Lihat juga

FltDecodeParameters

FltRetainSwappedBufferMdlAddress