Fungsi MmLockPagableSectionByHandle (ntddk.h)
Rutinitas MmLockPagableSectionByHandle mengunci bagian kode atau data yang dapat dipaginasi ke dalam memori sistem dengan meningkatkan jumlah referensi pada handel ke bagian .
Sintaks
void MmLockPagableSectionByHandle(
[in] PVOID ImageSectionHandle
);
Parameter
[in] ImageSectionHandle
Handel ke bagian kode atau data yang dapat di-pageable. Penelepon memperoleh handel ini dari panggilan sebelumnya ke rutinitas MmLockPagableCodeSection atau MmLockPagableDataSection .
Nilai kembali
Tidak ada
Keterangan
Driver awalnya memanggil MmLockPagableCodeSection atau MmLockPagableDataSection untuk mendapatkan handel ke bagian kode atau data yang dapat dipaginasi. Setelah itu, driver dapat memanggil MmLockPagableSectionByHandle dan MmUnlockPagableImageSection untuk meningkatkan dan mengurangi jumlah referensi pada handel.
Panggilan MmLockPagableCodeSection atau MmLockPagableDataSection mengunci bagian yang dapat dipaginasi ke dalam memori sistem, mengembalikan handel ke bagian , dan menginisialisasi jumlah referensi pada handel ke salah satu. MmLockPagableSectionByHandle meningkatkan jumlah referensi satu per satu, dan MmUnlockPagableImageSection mengurangi jumlah referensi satu per satu.
Jika jumlah referensi pada handel bukan nol, bagian yang dapat di-pageable dikunci. Jika jumlah referensi adalah nol, bagian tersebut tidak terkunci.
Handel ke bagian yang dapat di-pageable tetap valid selama driver tetap dimuat dalam memori. Driver dapat menggunakan handel yang sama untuk berulang kali mengunci dan membuka kunci bagian. Artinya, driver dapat menggunakan kembali handel yang jumlah referensinya nol. MmLockPagableSectionByHandle memeriksa untuk melihat apakah bagian yang direferensikan adalah residen di ruang alamat pemanggil dan, jika ya, cukup tingkatkan jumlah referensi pada bagian tersebut. Jika bagian bukan residen, halaman MmLockPagableSectionByHandle di bagian tersebut, menguncinya di ruang sistem, dan mengatur jumlah referensi menjadi satu.
Untuk menghindari kebocoran memori sistem, jumlah referensi pada handel harus nol ketika driver dibongkar dari memori. Jika tidak, bagian yang dapat di-pageable akan tetap terkunci ke dalam memori sistem setelah driver dibongkar.
Jika driver bersiap untuk membongkar, dan jumlah referensi pada handel bukan nol, driver harus memanggil MmUnlockPagableImageSection untuk mengurangi hitungan ke nol sebelum bongkar terjadi.
Driver tidak dapat memanggil MmLockPagableSectionByHandle untuk mengunci buffer pengguna yang diteruskan dalam RUN. Gunakan MmProbeAndLockPages sebagai gantinya .
Untuk informasi selengkapnya tentang kode halaman dan data, lihat Membuat Driver Dapat Di-Pageable.
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Tersedia dimulai dengan Windows 2000. |
Target Platform | Universal |
Header | ntddk.h (termasuk Ntddk.h) |
Pustaka | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= APC_LEVEL |
Aturan kepatuhan DDI | HwStorPortProhibitedDDIs(storport), IrqlMmApcLte(wdm) |
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