Freigeben über


Fehlerüberprüfung 0x18: REFERENCE_BY_POINTER

Die REFERENCE_BY_POINTER-Fehlerüberprüfung hat einen Wert von 0x00000018. Dies gibt an, dass die Verweisanzahl eines Objekts für den aktuellen Zustand des Objekts unzulässig ist.

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.

REFERENCE_BY_POINTER Parameter

Parameter Beschreibung

1

Objekttyp des Objekts, dessen Bezugsanzahl reduziert wird.

2

Objekt, dessen Bezugsanzahl reduziert wird.

3

Reserviert

4

Reserved

Ursache

Die Verweisanzahl eines Objekts ist für den aktuellen Status des Objekts unzulässig. Jedes Mal, wenn ein Treiber einen Zeiger auf ein Objekt verwendet, ruft der Treiber eine Kernelroutine auf, um die Referenzanzahl des Objekts um eins zu erhöhen. Wenn der Treiber mit dem Zeiger abgeschlossen ist, ruft der Treiber eine andere Kernelroutine auf, um die Referenzanzahl um eine zu verringern.

Treiber müssen Aufrufe den Routinen zuordnen, die den Referenzzähler erhöhen (Referenz) und verringern (Dereferenzierung). Diese Fehlerüberprüfung wird durch eine Inkonsistenz in der Referenzanzahl des Objekts verursacht. In der Regel wird die Inkonsistenz durch einen Treiber verursacht, der die Verweisanzahl eines Objekts zu oft verringert, wodurch zusätzliche Aufrufe ausgeführt werden, die das Objekt ableiten. Diese Fehlerüberprüfung kann auftreten, da die Verweisanzahl eines Objekts auf Null geht, während das Objekt weiterhin geöffnete Handles enthält. Es kann auch auftreten, wenn die Referenzanzahl des Objekts unter Null fällt, unabhängig davon, ob es offene Ziehpunkte für das Objekt gibt.

Lösung

Stellen Sie sicher, dass der Treiber Aufrufe der Routinen abgleicht, die die Referenzanzahl des Objekts erhöhen und verringern. Stellen Sie sicher, dass Ihr Treiber keine zusätzlichen Aufrufe an Routinen durchführt, die das Objekt ableiten (siehe Parameter 2).

Sie können einen Debugger verwenden, um dieses Problem zu analysieren. Weitere Informationen finden Sie unter Absturzabbildanalyse mit den Windows-Debuggern (WinDbg). Die !analyze-Debugerweiterung zeigt Informationen zur Fehlerüberprüfung an und kann bei der Ermittlung der Ursache hilfreich sein.

Verwenden Sie den Befehl "!object debugger", um die Ziehpunkt- und Zeigeranzahl für das Objekt zu finden.

kd> !object address

Wobei Adresse die Adresse des im Parameter 2 angegebenen Objekts ist.

Sie können im Code, der zu diesem Stoppcode führt, auch einen Haltepunkt setzen und versuchen, in einzelnen Schritten vorwärts in den fehlerhaften Code zu gelangen.

Wenn Sie nicht mit dem Windows-Debugger für die Arbeit an diesem Problem ausgestattet sind, können Sie einige grundlegende Problembehandlungstechniken verwenden.

  • Überprüfen Sie das Systemprotokoll in der Ereignisanzeige auf weitere Fehlermeldungen, die Ihnen helfen könnten, das Gerät oder den Treiber zu identifizieren, das bzw. der die Fehlerüberprüfung verursacht.

  • Wenn in der Fehlerüberprüfungsmeldung ein Treiber angegeben ist, deaktivieren Sie den Treiber oder erkundigen Sie sich beim Hersteller nach Treiberupdates.

  • Bestätigen Sie, dass die neu installierte Hardware mit der installierten Windows-Version kompatibel ist. Informationen zur benötigten Hardware finden Sie beispielsweise unter Windows 10-Spezifikationen.

  • Weitere allgemeine Informationen zur Fehlerbehebung finden Sie unter Analysieren von Fehlerüberprüfungs-Bluescreen-Daten.