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 |