Fungsi FsRtlPrepareMdlWriteEx (ntifs.h)

Rutinitas FsRtlPrepareMdlWriteEx mengembalikan daftar tertaut daftar deskriptor memori (MDL) yang menunjuk ke rentang data file yang di-cache yang ditentukan untuk menulis data langsung ke cache. Jika dukungan cache untuk tulis tidak tersedia, rutin kembali ke operasi penulisan MDL berbasis IRP.

Sintaks

NTSTATUS FsRtlPrepareMdlWriteEx(
  [in]  PFILE_OBJECT     FileObject,
  [in]  PLARGE_INTEGER   FileOffset,
  [in]  ULONG            Length,
  [in]  ULONG            LockKey,
  [out] PMDL             *MdlChain,
  [out] PIO_STATUS_BLOCK IoStatus
);

Parameter

[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 untuk ditulis ke 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 tidak termasuk, nilai dalam parameter ini harus menjadi kunci untuk kunci yang tidak termasuk. Kunci harus dipegang oleh proses induk dari 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

Penunjuk ke struktur IO_STATUS_BLOCK yang, pada output, berisi status transfer. Jika operasi berhasil, IoStatus.Status diatur ke STATUS_SUCCESS. Jika tidak, ini diatur ke kode kesalahan NTSTATUS yang sesuai. IoStatus.Information diatur ke jumlah byte aktual yang berhasil dikunci rutinitas.

Nilai kembali

FsRtlPrepareMdlWriteEx mengembalikan STATUS_SUCCESS atau nilai NTSTATUS yang sesuai, seperti salah satu hal berikut ini:

Menampilkan kode Deskripsi
STATUS_INSUFFICIENT_RESOURCES
IRP untuk tulis berbasis IRP tidak dapat dialokasikan.

Keterangan

Jika I/O cepat tersedia untuk sistem file, rutinitas FsRtlPrepareMdlWriteEx akan melewati mekanisme penulisan IRP yang biasa dan mengembalikan daftar tertaut daftar deskriptor memori (MDL) yang dapat digunakan pemanggil untuk menulis data langsung ke cache file. Alih-alih menyalin data yang di-buffer ke dalam cache, halaman fisik yang akan ditimpa penelepon dikunci dalam memori dan dapat ditulis secara langsung. FsRtlPrepareMdlWriteEx mengembalikan satu atau beberapa daftar deskriptor memori (MDL) yang menunjuk ke rentang byte yang ditentukan.

Jika I/O cepat tidak diaktifkan, FsRtlPrepareMdlWriteEx akan menghasilkan persiapan penulisan MDL berbasis IRP yang sinkron dan mengembalikan MDL yang dialokasikan dari permintaan.

Halaman yang ditujukan MDL dikunci dalam memori, tetapi tidak dipetakan dalam ruang sistem. Pemanggil dapat melakukan pemetaan ini dengan memanggil MmGetSystemAddressForMdlSafe.

Setiap panggilan ke FsRtlPrepareMdlWriteEx harus diikuti dengan panggilan ke CcMdlWriteComplete.

Persyaratan

Persyaratan Nilai
Target Platform Universal
Header ntifs.h (termasuk Ntifs.h)
Pustaka NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL

Lihat juga

CcMdlWriteComplete

CcPrepareMdlWrite

MmGetSystemAddressForMdlSafe