Partager via


Accès à Read-Only mémoire système

Le Gestionnaire de mémoire Windows applique l’accès en lecture seule aux pages qui ne sont pas marquées comme accessibles en écriture.

La mémoire en lecture seule a toujours été protégée en mode utilisateur. Toutefois, dans Windows NT 4.0 et les versions antérieures, la mémoire en lecture seule n’était pas protégée en mode noyau.

Si un pilote ou une application en mode noyau Windows tente d’écrire dans un segment de mémoire en lecture seule, le système émet un bogue case activée. Pour plus d’informations, consultez Vérification des bogues 0xBE : ATTEMPTED_WRITE_TO_READONLY_MEMORY.

Intercepter les appels système

Certains pilotes interceptent les appels système en remplaçant le propre code du pilote et en insérant des instructions de saut ou d’autres modifications. Étant donné que le propre code du pilote est en lecture seule, cette technique entraîne l’émission d’un bogue case activée.

Chaînes globales

Si une chaîne globale doit être modifiée, elle ne doit pas être déclarée en tant que pointeur vers une valeur constante :

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

Dans ce cas, l’éditeur de liens peut placer la chaîne dans un segment de mémoire en lecture seule. Ensuite, une tentative de modification de la chaîne entraîne un bogue case activée.

Au lieu de cela, la chaîne doit être déclarée explicitement en tant que tableau de caractères de valeur L :

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

Cette déclaration garantit que la chaîne est placée dans la mémoire accessible en écriture.