Bagikan melalui


Fungsi FsRtlPrepareMdlWriteDev (ntifs.h)

Rutinitas FsRtlPrepareMdlWriteDev mengembalikan daftar tertaut daftar deskriptor memori (MDL) yang menunjuk ke rentang data file yang di-cache yang ditentukan untuk menulis data langsung ke cache.

Sintaks

BOOLEAN FsRtlPrepareMdlWriteDev(
  [in]             PFILE_OBJECT     FileObject,
  [in]             PLARGE_INTEGER   FileOffset,
  [in]             ULONG            Length,
  [in]             ULONG            LockKey,
  [out]            PMDL             *MdlChain,
  [out]            PIO_STATUS_BLOCK IoStatus,
  [ in, optional ] PDEVICE_OBJECT   DeviceObject
);

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

[ in, optional ] DeviceObject

Penunjuk ke objek perangkat tempat file dibuka.

Nilai kembali

Rutinitas FsRtlPrepareMdlWriteDev mengembalikan TRUE jika operasi berhasil dan FALSE jika operasi gagal.

Keterangan

FsRtlPrepareMdlWriteDev mirip dengan FsRtlCopyWrite, kecuali bahwa FsRtlPrepareMdlWriteDev tidak menyalin data ke cache. Sebaliknya, halaman fisik yang akan ditimpa penelepon dikunci dalam memori, dan FsRtlPrepareMdlWriteDev mengembalikan satu atau beberapa daftar deskriptor memori (MDL) yang menunjuk ke rentang byte yang ditentukan. Halaman terkunci tetap terkunci sampai penelepon memanggil FsRtlMdlWriteCompleteDev.

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 FsRtlPrepareMdlWriteDev 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 FsRtlMdlWriteCompleteDev untuk membebaskan MDL yang dialokasikan.

Persyaratan

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

Lihat juga

FsRtlMdlWriteCompleteDev

FsRtlCopyWrite

MmGetSystemAddressForMdlSafe