Fungsi FsRtlMdlReadEx (ntifs.h)
Rutinitas FsRtlMdlReadEx melakukan pembacaan MDL cache yang cepat. Jika data yang diminta tidak di-cache, rutin kembali ke operasi baca MDL berbasis IRP.
Sintaks
NTSTATUS FsRtlMdlReadEx(
[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 variabel yang menentukan offset byte awal dalam file 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 tidak termasuk, nilai dalam parameter ini harus menjadi kunci untuk kunci yang tidak termasuk Kunci harus ditahan oleh proses induk utas panggilan. Jika tidak, parameter ini tidak berpengaruh.
[out] MdlChain
Alamat variabel yang menerima penunjuk ke daftar daftar deskriptor memori (MDL) yang ditautkan. MdlChain harus diinisialisasi ke NULL sebelum panggilan ke FsRtlMdlReadEx.
[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.
Mengembalikan nilai
FsRtlMdlReadEx mengembalikan STATUS_SUCCESS atau nilai NTSTATUS yang sesuai, seperti salah satu hal berikut ini:
Menampilkan kode | Deskripsi |
---|---|
STATUS_INSUFFICIENT_RESOURCES | IRP untuk baca berbasis IRP tidak dapat dialokasikan. |
Keterangan
Jika I/O cepat tersedia dari sistem file, rutinitas FsRtlMdlReadEx akan melewati mekanisme baca IRP yang biasa dan mengembalikan daftar tertaut daftar deskriptor memori (MDL) yang dapat digunakan pemanggil untuk langsung mengakses data file yang di-cache. Operasi ini tidak menyalin atau menyangga data dan oleh karena itu jauh lebih cepat daripada bacaan normal. Jika I/O cepat tidak diaktifkan, FsRtlMdlReadEx akan menghasilkan MDL berbasis IRP yang sinkron membaca dan mengembalikan MDL dari permintaan.
Halaman yang dijelaskan oleh MDL dikunci dalam memori, tetapi tidak dipetakan di ruang sistem. Pemanggil dapat melakukan pemetaan ini dengan memanggil MmGetSystemAddressForMdlSafe.
Mirip dengan CcMdlRead, rutinitas FsRtlMdlReadEx mengunci halaman yang berisi data file yang di-cache untuk mencegah sistem menukar halaman ini ke file halaman. Halaman tetap terkunci dalam memori sampai pemanggil memanggil rutinitas CcMdlReadComplete .
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Windows 8 |
Target Platform | Universal |
Header | ntifs.h (termasuk Ntifs.h) |
Pustaka | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
Lihat juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk