Wie komme ich zu der Lösung zu ddiverse Abstürze mit IRQL_NOT_LESS_OR_EQUAL oder Memory Management
Archiv Windows XP 25.916 Themen, 128.567 Beiträge
Die Fehlermeldung IRQL_not_less_or_equal tritt auf, wenn ein KernelMode-Prozess oder ein Treiber in eine falsche Adresse zu schreiben versucht, auf die er kein Zugriffsrecht hat.
Der gewöhnlichste Grund für diesen Fehler ist ein korrupter Zeiger, der auf eine falsche Speicheradresse zeigt. Ein Zeiger ist eine Variable, die von einem Programm benutzt wird, um auf einen Speicherblock zu verweisen. Wenn die Variable nun einen falschen Wert beinhaltet, versucht das Programm auf einen Speicherbereich zuzugreifen, auf den es nicht sollte. Geschieht dies in einer BenutzerModus Anwendung, kommt es zu einer Zugriffsverletzung. Geschieht es aber im KernelModus, so wird eine STOP 0x0000000A Meldung erzeugt. Dies geschieht z.B. bei Treibern.
Um herauszufinden, welcher Prozess oder welcher Treiber versucht, auf die verbotene Speicheradresse zuzugreifen, muss man die Parameter naeher betrachten, die in der STOP Information erscheinen. Zum Beispiel sieht die STOP Meldung folgendermassen aus:
STOP 0x0000000A(0xWWWWWWWW, 0xXXXXXXXX, 0xYYYYYYYY, 0xZZZZZZZZ)
IRQL_not_less_or_equal
** Address 0xZZZZZZZZ has base at [address] - [driver]
Die vier Parameter in den Klammern haben folgende Bedeutung:
0xWWWWWWWW Adresse, auf die falsch verwiesen wurde
0xXXXXXXXX IRQL, der erforderlich war, um auf den Speicherbereich zuzugreifen
0xYYYYYYYY Zugriffstyp, 0=lesen, 1=schreiben
0xZZZZZZZZ Adresse der Instruktion, die versuchte auf die Speicheradresse 0xWWWWWWWW zuzugreifen
Wenn der letzte Parameter (0xZZZZZZZZ) in den Adressbereich eines Gerätetreibers des Systems fällt, wissen Sie, welcher Gerätetreiber gerade lief, als der Speicherzugriff geschah. Dieser Treiber ist oft in der dritten Zeile des STOP Bildschirms zu finden:
** Address 0xZZZZZZZZ has base at [address] - [driver]