Bagikan melalui


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

Lihat juga

FltFastIoMdlWriteComplete

FsRtlCopyWrite

MmGetSystemAddressForMdlSafe