Fungsi FltFastIoPrepareMdlWrite (fltkernel.h)
Rutinitas FltFastIoPrepareMdlWrite mengembalikan daftar daftar deskriptor memori (MDL) yang ditautkan yang menunjuk ke rentang data file yang di-cache yang ditentukan untuk menulis data langsung ke cache.
Sintaks
BOOLEAN FLTAPI FltFastIoPrepareMdlWrite(
PFLT_INSTANCE InitiatingInstance,
[in] PFILE_OBJECT FileObject,
[in] PLARGE_INTEGER FileOffset,
[in] ULONG Length,
[in] ULONG LockKey,
[out] PMDL *MdlChain,
[out] PIO_STATUS_BLOCK IoStatus
);
Parameter
InitiatingInstance
Penunjuk instans buram untuk pemanggil. Parameter ini diperlukan dan tidak boleh NULL.
[in] FileObject
Penunjuk ke objek file.
[in] FileOffset
Penunjuk ke nilai yang menentukan offset byte awal dalam cache yang menyimpan data.
[in] Length
Panjang byte data yang akan dibaca dari cache.
[in] LockKey
Nilai yang terkait dengan rentang byte untuk dikunci. Jika rentang untuk mengunci tumpang tindih dengan rentang lain yang sudah dikunci dengan kunci tidak termasuk, atau jika rentang yang akan dibaca adalah subrange dari rentang lain yang sudah dikunci secara non-eksklusif, nilai dalam parameter ini harus menjadi kunci untuk kunci yang tidak termasuk itu. Kunci harus dipegang oleh proses induk utas panggilan. Jika tidak, parameter ini tidak berpengaruh.
[out] MdlChain
Pada output, penunjuk ke daftar daftar deskriptor memori (MDL) tertaut yang menunjuk ke rentang byte dalam data yang di-cache.
[out] IoStatus
Pointer ke struktur IO_STATUS_BLOCK yang, pada output, berisi status transfer. Jika operasi berhasil, IoStatus.Status diatur ke STATUS_SUCCESS. Jika tidak, kode ini diatur ke kode kesalahan NTSTATUS yang sesuai. IoStatus.Information diatur ke jumlah byte aktual yang berhasil dikunci oleh rutinitas.
Nilai kembali
Rutinitas FltFastIoPrepareMdlWrite mengembalikan TRUE jika operasi berhasil dan FALSE jika operasi gagal.
Keterangan
FltFastIoPrepareMdlWrite mirip dengan FsRtlCopyWrite, kecuali bahwa FltFastIoPrepareMdlWrite tidak menyalin data ke cache. Sebaliknya, halaman fisik yang akan ditimpa pemanggil dikunci dalam memori, dan FltFastIoPrepareMdlWrite mengembalikan satu atau beberapa daftar deskriptor memori (MDL) yang menunjuk ke rentang byte yang ditentukan. Halaman terkunci tetap terkunci sampai pemanggil memanggil FltFastIoMdlWriteComplete.
Halaman yang ditujukan MDL dikunci dalam memori, tetapi tidak dipetakan dalam ruang sistem. Pemanggil dapat melakukan pemetaan ini dengan memanggil MmGetSystemAddressForMdlSafe.
Bahkan jika panggilan ke FltFastIoPrepareMdlWrite gagal, satu atau beberapa MDL mungkin telah dialokasikan. Pemanggil dapat memeriksa nilai IoStatus.Information untuk menentukan apakah ini telah terjadi. Jika sudah, pemanggil harus memanggil FltFastIoMdlWriteComplete untuk membebaskan MDL yang dialokasikan.
Persyaratan
Persyaratan | Nilai |
---|---|
Target Platform | Universal |
Header | fltkernel.h (termasuk Ntifs.h) |
Pustaka | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= APC_LEVEL |