Acceso a la memoria del sistema de Read-Only
El administrador de memoria de Windows aplica el acceso de solo lectura de las páginas que no están marcadas como grabables.
La memoria de solo lectura siempre se ha protegido en modo de usuario. Sin embargo, en Windows NT 4.0 y versiones anteriores, la memoria de solo lectura no estaba protegida en modo kernel.
Si una aplicación o controlador en modo kernel de Windows intenta escribir en un segmento de memoria de solo lectura, el sistema emite una comprobación de errores. Para obtener más información, vea Comprobación de errores 0xBE: ATTEMPTED_WRITE_TO_READONLY_MEMORY.
Interceptación de llamadas del sistema
Algunos controladores interceptan las llamadas del sistema sobrescribiendo el propio código del controlador e insertando instrucciones de salto u otros cambios. Dado que el propio código del controlador es de solo lectura, esta técnica hará que se emita una comprobación de errores.
Cadenas globales
Si se va a modificar una cadena global, no debe declararse como puntero a un valor constante:
CHAR *myString = "This string cannot be modified.";
En este caso, el enlazador podría colocar la cadena en un segmento de memoria de solo lectura. A continuación, un intento de modificar la cadena producirá una comprobación de errores.
En su lugar, la cadena debe declararse explícitamente como una matriz de caracteres de valor L:
CHAR myString[] = "This string can be modified.";
Esta declaración garantiza que la cadena se coloque en memoria grabable.