Bekerja dengan Halaman
Untuk menentukan ukuran halaman di komputer saat ini, gunakan fungsi GetSystemInfo.
Fungsi VirtualQuery dan VirtualQueryEx mengembalikan informasi tentang wilayah halaman berturut-turut yang dimulai pada alamat tertentu di ruang alamat proses. VirtualQuery mengembalikan informasi tentang memori dalam proses panggilan. VirtualQueryEx mengembalikan informasi tentang memori dalam proses tertentu dan digunakan untuk mendukung debugger yang memerlukan informasi tentang proses yang sedang di-debug. Wilayah halaman dibatasi oleh alamat yang ditentukan yang dibulatkan ke bawah ke batas halaman terdekat. Ini berlanjut ke semua halaman berikutnya dengan atribut berikut yang dimiliki bersama:
- Status semua halaman sama: berkomitmen, dicadangkan, atau gratis.
- Jika halaman awal tidak gratis, semua halaman di wilayah tersebut adalah bagian dari alokasi awal halaman yang sama yang dicadangkan oleh panggilan ke VirtualAlloc.
- Perlindungan akses semua halaman sama (yaitu, PAGE_READONLY, PAGE_READWRITE, atau PAGE_NOACCESS).
Fungsi VirtualLock memungkinkan proses untuk mengunci satu atau beberapa halaman memori yang dikomit ke dalam memori fisik (RAM), mencegah sistem menukar halaman ke berkas halaman. Ini dapat digunakan untuk memastikan bahwa data penting dapat diakses tanpa akses disk. Mengunci halaman ke dalam memori berbahaya karena membatasi kemampuan sistem untuk mengelola memori. Penggunaan VirtualLock yang berlebihan dapat menurunkan kinerja sistem dengan menyebabkan kode eksekusi dipindahkan ke file halaman. Fungsi VirtualUnlock membuka kunci memori yang dikunci oleh VirtualLock.
FungsiVirtualProtect memungkinkan proses untuk memodifikasi perlindungan akses halaman yang diterapkan di ruang alamat proses. Misalnya, proses dapat mengalokasikan halaman baca/tulis untuk menyimpan data sensitif, dan kemudian dapat mengubah akses untuk membaca saja atau tidak ada akses untuk melindungi dari penimpaan yang tidak disengaja. VirtualProtect biasanya digunakan untuk halaman yang dialokasikan oleh VirtualAlloc, tetapi juga berfungsi dengan halaman yang dikelola oleh fungsi alokasi lainnya. Namun, VirtualProtect mengubah perlindungan seluruh halaman, dan pointer yang dikembalikan oleh fungsi lain belum tentu selaras pada batas halaman. FungsiVirtualProtectEx mirip dengan VirtualProtect, kecuali mengubah perlindungan memori dalam proses yang ditentukan. Mengubah perlindungan berguna untuk debugger dalam mengakses memori proses yang sedang di-debug.