Mengakses Memori Sistem Hanya Baca

Manajer memori Windows memberlakukan akses baca-saja halaman yang tidak ditandai sebagai bisa-tulis.

Memori baca-saja selalu dilindungi dalam mode pengguna. Namun, di Windows NT 4.0 dan versi yang lebih lama, memori baca-saja tidak dilindungi dalam mode kernel.

Jika driver atau aplikasi mode kernel Windows mencoba menulis ke segmen memori baca-saja, sistem akan mengeluarkan pemeriksaan bug. Untuk informasi selengkapnya, lihat Bug Check 0xBE: ATTEMPTED_WRITE_TO_READONLY_MEMORY.

Mencegat Panggilan Sistem

Beberapa driver mencegat panggilan sistem dengan mengganti kode driver mereka sendiri dan memasukkan instruksi lompatan atau perubahan lainnya. Karena kode driver sendiri bersifat baca-saja, teknik ini akan menyebabkan bug check terjadi.

String Global

Jika string global akan dimodifikasi, string tersebut tidak boleh dinyatakan sebagai penunjuk ke nilai konstanta:

CHAR *myString = "This string cannot be modified.";

Dalam hal ini, linker mungkin menempatkan string di segmen memori baca-saja. Kemudian upaya untuk memodifikasi string akan menghasilkan pemeriksaan kesalahan.

Sebagai gantinya, string harus dinyatakan secara eksplisit sebagai array karakter nilai L:

CHAR myString[] = "This string can be modified.";

Deklarasi ini memastikan bahwa string dimasukkan ke dalam memori yang dapat ditulis.