Accesso alla memoria di sistema Read-Only
Gestione memoria di Windows applica l'accesso in sola lettura alle pagine non contrassegnate come scrivibili.
La memoria di sola lettura è sempre stata protetta in modalità utente. Tuttavia, in Windows NT 4.0 e versioni precedenti, la memoria di sola lettura non è stata protetta in modalità kernel.
Se un driver o un'applicazione in modalità kernel di Windows tenta di scrivere in un segmento di memoria di sola lettura, il sistema invia un controllo di bug. Per altre informazioni, vedere Controllo bug 0xBE: ATTEMPTED_WRITE_TO_READONLY_MEMORY.
Intercettazione delle chiamate di sistema
Alcuni driver intercettano le chiamate di sistema sovrascrivendo il codice del driver e inserendo istruzioni di salto o altre modifiche. Poiché il codice del driver è di sola lettura, questa tecnica causerà l'emissione di un controllo di bug.
Stringhe globali
Se una stringa globale deve essere modificata, non deve essere dichiarata come puntatore a un valore costante:
CHAR *myString = "This string cannot be modified.";
In questo caso, il linker potrebbe inserire la stringa in un segmento di memoria di sola lettura. Quindi, un tentativo di modificare la stringa comporterà un controllo di bug.
La stringa deve invece essere dichiarata in modo esplicito come matrice di caratteri L-value:
CHAR myString[] = "This string can be modified.";
Questa dichiarazione assicura che la stringa venga inserita in memoria scrivibile.