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

MmLockPagableCodeSection

MmLockPagableDataSection

MmPageEntireDriver

MmProbeAndLockPages

MmResetDriverPaging

MmUnlockPagableImageSection