Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Správce paměti systému Windows vynucuje přístup ke stránkám, které nejsou označené jako zapisovatelné, jen pro čtení.
Paměť jen pro čtení byla vždy chráněna v uživatelském režimu. V systému Windows NT 4.0 a starších verzích však nebyla paměť jen pro čtení chráněna v režimu jádra.
Pokud se ovladač nebo aplikace v režimu jádra Systému Windows pokusí zapisovat do segmentu paměti jen pro čtení, systém vydá kontrolu chyb. Další informace najdete v tématu Kontrola chybového kódu 0xBE: ATTEMPTED_WRITE_TO_READONLY_MEMORY.
Zachycení systémových volání
Některé ovladače zachycují systémová volání tím, že přepíší svůj vlastní kód a vloží instrukce pro skok nebo provedou jiné úpravy. Vzhledem k tomu, že vlastní kód ovladače je jen pro čtení, tato technika způsobí vydání kontroly chyb.
Globální řetězce
Pokud se má globální řetězec upravit, nesmí být deklarován jako ukazatel na konstantní hodnotu:
CHAR *myString = "This string cannot be modified.";
V tomto případě může linker vložit řetězec do segmentu paměti jen pro čtení. Pokus o úpravu řetězce pak způsobí kontrolu chyb.
Místo toho by měl být řetězec explicitně deklarován jako pole znaků typu L-value.
CHAR myString[] = "This string can be modified.";
Tato deklarace zajišťuje, že je řetězec vložen do zapisovatelné paměti.