Freigeben über


Fehlerüberprüfung 0xA: IRQL_NOT_LESS_OR_EQUAL

Die IRQL_NOT_LESS_OR_EQUAL Fehlerüberprüfung weist den Wert 0x0000000A auf. Diese Fehlerüberprüfung weist darauf hin, dass Microsoft Windows oder ein Kernelmodustreiber auf seitenseitigen Speicher an einer ungültigen Adresse zugegriffen hat, während sie auf einer ausgelösten Interruptanforderungsebene (IRQL) ausgelöst wurde. Die Ursache ist in der Regel ein schlechtes Zeiger- oder Seitenbarkeitsproblem.

Wichtig

Dieser Artikel richtet sich an Programmierer*innen. Wenn Sie ein/eine Kund*in sind, der/die einen Bluescreen-Fehlercode bei der Benutzung eines Computers erhalten hat, lesen Sie bitte Fehlerbehebung bei Bluescreen-Fehlern.

IRQL_NOT_LESS_OR_EQUAL-Parameter

Parameter Beschreibung
1 Auf die virtuelle Speicheradresse, auf die nicht zugegriffen werden konnte.

Verwenden Sie !pool auf dieser Adresse, um festzustellen, ob es sich um einen ausgelagerten Pool handelt. Andere Befehle, die beim Sammeln von Informationen zum Fehler hilfreich sein können, sind !pte, !address und ln (List Nearest Symbols).
2 IRQL zum Zeitpunkt des Fehlers.

Werte:
2 – Der IRQL war zum Zeitpunkt des Fehlers DISPATCH_LEVEL.
3 Bitfeld, das den Vorgang beschreibt, der den Fehler verursacht hat. Beachten Sie, dass Bit 3 nur für Chipsätze verfügbar ist, die diese Berichtsebene unterstützen.

0-Bit-Werte:
0 - Lesevorgang
1 - Schreibvorgang

3-Bit-Werte:
0 – Kein Ausführungsvorgang
1 - Vorgang ausführen

Kombinierte Bit 0- und Bit 3-Werte:
0x0 – Fehler beim Lesen von der Adresse in Parameter 1
0x1 – Fehler beim Schreiben an die Adresse in Parameter 1
0x8 – Fehler beim Ausführen von Code aus der Adresse im Parameter 1

Dies Wert wird durch Folgendes verursacht:
  • Aufrufen einer Funktion, die bei DISPATCH_LEVEL bei DISPATCH_LEVEL nicht aufgerufen werden kann.
  • Vergessen Sie, ein Spinlock freizugeben.
  • Kennzeichnen von Code als seitenfähig, wenn er nicht seitenfähig sein muss. Wenn der Code beispielsweise ein Spinlock abruft oder in einem Aufruf verzögerter Prozedur aufgerufen wird.
4 Der Anweisungszeiger zum Zeitpunkt des Fehlers.

Verwenden Sie in dieser Adresse den Befehl "ln" (Listennächste Symbole), um den Namen der Funktion anzuzeigen.

Ursache

Diese Fehlerüberprüfung wird durch Kernelmodusgerätetreiber verursacht, die unsachgemäße Adressen verwenden.

Diese Fehlerüberprüfung gibt an, dass versucht wurde, auf eine ungültige Adresse zuzugreifen, während sie auf einer ausgelösten Interruptanforderungsebene (IRQL) ausgelöst wurde. Die Ursache ist entweder ein fehlerhafter Speicherzeiger oder ein Seitenierbarkeitsproblem mit dem Gerätetreibercode.

Allgemeine Richtlinien, die Sie verwenden können, um den Typ des Codierungsfehlers zu kategorisieren, der die Fehlerüberprüfung verursacht hat, sind wie folgt:

  • Wenn Parameter 1 kleiner als 0x1000 ist, liegt das Problem wahrscheinlich an einer Dereferenzierung eines NULL-Zeigers.

  • Wenn !pool meldet, dass der Parameter 1 ausgelagerter Pool (oder andere Typen von ausgelagertem Speicher) ist, ist die IRQL zu hoch, um auf diese Daten zuzugreifen. Führen Sie einen niedrigeren IRQL aus, oder weisen Sie die Daten im nicht seitenseitigen Pool zu.

  • Wenn Parameter 3 angibt, dass die Fehlerüberprüfung ein Versuch war, ausgelagerten Code auszuführen, ist die IRQL zu hoch, um diese Funktion aufzurufen. Führen Sie bei einem niedrigeren IRQL aus, oder markieren Sie den Code nicht als seitenfähig.

  • Es kann ein schlechter Zeiger sein, der durch verwendungsfreies oder Bit-Flipping verursacht wird. Untersuchen Sie die Gültigkeit von Parameter 1 mit !pte, !address und ln (listennächste Symbole).

Lösung

Wenn ein Kerneldebugger verfügbar ist, rufen Sie eine Stapelablaufverfolgung ab. ühren Sie zunächst die Debuggererweiterung !analyze aus, um Informationen zur Fehlerprüfung anzuzeigen. Die !analyze-Erweiterung kann hilfreich sein, um die Ursache zu bestimmen. Geben Sie als Nächstes einen der k*-Befehle (Anzeigestapel-Backtrace) ein, um den Aufrufstapel anzuzeigen.

Sammeln von Informationen

Überprüfen Sie den Namen des Treibers, wenn er auf dem blauen Bildschirm aufgeführt wurde.

Überprüfen Sie das Systemprotokoll in der Ereignisanzeige auf andere Fehlermeldungen, die Ihnen helfen können, das Gerät oder den Treiber zu finden, das/der den Fehler verursacht. Suchen Sie im Systemprotokoll nach kritischen Fehlern, die in demselben Zeitrahmen wie der Bluescreen aufgetreten sind.

Driver Verifier

Driver Verifier ist ein Tool, das in Echtzeit ausgeführt wird, um das Verhalten von Treibern zu untersuchen. Beispielsweise überprüft die Treiberüberprüfung die Verwendung von Speicherressourcen, z. B. Speicherpools. Wenn Fehler bei der Ausführung des Treibercodes festgestellt werden, wird proaktiv eine Ausnahme erstellt, damit dieser Teil des Treibercodes genauer untersucht werden kann. Der Treiberprüfer-Manager ist in Windows integriert und ist auf allen Windows-PCs verfügbar.

Um Driver Verifier Manager zu starten, geben Sie verifier in eine Eingabeaufforderung ein. Sie können konfigurieren, welche Treiber überprüft werden sollen. Der Code, der die Treiber überprüft, erhöht den Aufwand bei der Ausführung. Versuchen Sie daher, die kleinste Anzahl möglicher Treiber zu überprüfen. Weitere Informationen finden Sie unter Treiberüberprüfung.

Der folgende Code zeigt ein Debugbeispiel:

kd> .bugcheck       [Lists bug check data.]
Bugcheck code 0000000a
Arguments 00000000 0000001c 00000000 00000000

kd> kb [Lists the stack trace.]
ChildEBP RetAddr  Args to Child
8013ed5c 801263ba 00000000 00000000 e12ab000 NT!_DbgBreakPoint
8013eecc 801389ee 0000000a 00000000 0000001c NT!_KeBugCheckEx+0x194
8013eecc 00000000 0000000a 00000000 0000001c NT!_KiTrap0E+0x256
8013ed5c 801263ba 00000000 00000000 e12ab000
8013ef64 00000246 fe551aa1 ff690268 00000002 NT!_KeBugCheckEx+0x194

kd> kv [Lists the trap frames.]
ChildEBP RetAddr  Args to Child
8013ed5c 801263ba 00000000 00000000 e12ab000 NT!_DbgBreakPoint (FPO: [0,0,0])
8013eecc 801389ee 0000000a 00000000 0000001c NT!_KeBugCheckEx+0x194
8013eecc 00000000 0000000a 00000000 0000001c NT!_KiTrap0E+0x256 (FPO: [0,0] TrapFrame @ 8013eee8)
8013ed5c 801263ba 00000000 00000000 e12ab000
8013ef64 00000246 fe551aa1 ff690268 00000002 NT!_KeBugCheckEx+0x194

kd> .trap 8013eee8 [Gets the registers for the trap frame at the time of the fault.]
eax=dec80201 ebx=ffdff420 ecx=8013c71c edx=000003f8 esi=00000000 edi=87038e10
eip=00000000 esp=8013ef5c ebp=8013ef64 iopl=0         nv up ei pl nz na pe nc
cs=0008  ss=0010  ds=0023  es=0023  fs=0030  gs=0000             efl=00010202
ErrCode = 00000000
00000000 ???????????????    [The current instruction pointer is NULL.]

kd> kb       [Gives the stack trace before the fault.]
ChildEBP RetAddr  Args to Child
8013ef68 fe551aa1 ff690268 00000002 fe5620d2 NT!_DbgBreakPoint
8013ef74 fe5620d2 fe5620da ff690268 80404690
NDIS!_EthFilterIndicateReceiveComplete+0x31
8013ef64 00000246 fe551aa1 ff690268 00000002 elnkii!_ElnkiiRcvInterruptDpc+0x1d0

Hinweise

Der Fehler, der diese Fehlerüberprüfung generiert, tritt in der Regel nach der Installation eines fehlerhaften Gerätetreibers, Systemdiensts oder BIOS auf.

Wenn beim Upgrade auf eine neuere Version von Windows Fehlerüberprüfungen 0xA auftreten, kann der Fehler durch einen Gerätetreiber, einen Systemdienst, einen Virenscanner oder ein Sicherungstool verursacht werden, das mit der neuen Version nicht kompatibel ist.

Beheben eines fehlerhaften Hardwareproblems: Wenn dem System kürzlich Hardware hinzugefügt wurde, entfernen Sie es, um festzustellen, ob der Fehler rekursiert wird. Wenn bei vorhandener Hardware ein Fehler aufgetreten ist, entfernen oder ersetzen Sie die fehlerhafte Komponente. Führen Sie Hardwarediagnosen durch, die vom Systemhersteller bereitgestellt werden. Ausführliche Informationen zu diesen Verfahren finden Sie im Handbuch des Besitzers für Ihren Computer.

Beheben eines fehlerhaften Systemdienstproblems: Deaktivieren Sie den Dienst und prüfen Sie, ob der Fehler dadurch behoben wird. Falls ja, wenden Sie sich an den Hersteller des Systemdiensts, um ein mögliches Update zu erhalten. Wenn der Fehler beim Systemstart auftritt, untersuchen Sie die Windows-Reparaturoptionen. Weitere Informationen finden Sie unter Wiederherstellungsoptionen in Windows 10.

Beheben eines Antivirensoftwareproblems: Deaktivieren Sie das Programm und prüfen Sie, ob der Fehler dadurch behoben wird. Wenn dies der Fall ist, wenden Sie sich an den Hersteller des Programms über ein mögliches Update.

Allgemeine Informationen zur Problembehandlung bei Fehlerüberprüfungen finden Sie unter "Analysieren von Fehlerüberprüfungs-Bluescreen-Daten".

Siehe auch

Bug Check Code Reference (Referenz zu Fehlerüberprüfungscodes)