Share via


Fehlerprüfung 0x18: REFERENCE_BY_POINTER

Die REFERENCE_BY_POINTER-Fehlerüberprüfung weist den Wert 0x00000018 auf. 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. Wenn Sie ein Kunde sind, der während der Verwendung Ihres Computers einen Bluescreen-Fehlercode erhalten hat, finden Sie weitere Informationen unter Behandeln von Bluescreenfehlern.

REFERENCE_BY_POINTER Parameter

Parameter BESCHREIBUNG

1

Objekttyp des Objekts, dessen Verweisanzahl gesenkt wird.

2

Objekt, dessen Verweisanzahl gesenkt wird.

3

Reserviert

4

Reserviert

Ursache

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

Treiber müssen Aufrufe an die Routinen abgleichen, die die Verweisanzahl erhöhen (Verweis) und verringern (Dereferenzierung). Diese Fehlerprüfung wird durch eine Inkonsistenz in der Verweisanzahl 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 dereferenzieren. Diese Fehlerüberprüfung kann auftreten, weil die Verweisanzahl eines Objekts auf 0 (null) geht, während noch geöffnete Handles für das Objekt vorhanden sind. Es kann auch auftreten, wenn die Verweisanzahl des Objekts unter 0 (null) fällt, unabhängig davon, ob für das Objekt geöffnete Handles vorhanden sind oder nicht.

Lösung

Stellen Sie sicher, dass der Treiber Aufrufe der Routinen abgleicht, die die Verweisanzahl des Objekts erhöhen und verringern. Stellen Sie sicher, dass Ihr Treiber keine zusätzlichen Aufrufe von Routinen durchführt, die das Objekt dereferenzieren (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 Grundursache hilfreich sein.

Verwenden Sie den Befehl !object debugger, um das Handle und die Zeigeranzahl für das Objekt zu ermitteln.

kd> ! object-Adresse

Dabei ist address die Adresse des Objekts, das in Parameter 2 angegeben ist.

Sie können auch einen Haltepunkt im Code festlegen, der zu diesem Stoppcode führt, und versuchen, den fehlerhaften Code schrittweise zu durchlaufen.

Wenn Sie nicht in der Lage sind, den Windows-Debugger zu verwenden, um dieses Problem zu beheben, können Sie einige grundlegende Problembehandlungstechniken verwenden.

  • Überprüfen Sie die system log in Ereignisanzeige auf zusätzliche Fehlermeldungen, die bei der Identifizierung des Geräts oder Treibers helfen können, das bzw. den diese Fehlerprüfung verursacht.

  • Wenn in der Fehlerprüfungsmeldung ein Treiber angegeben ist, deaktivieren Sie ihn, oder wenden Sie sich an den Hersteller, um Treiberupdates anzufordern.

  • Vergewissern Sie sich, dass alle installierten neuen Hardwaregeräte mit der installierten Version von Windows kompatibel sind. Informationen zu erforderlicher Hardware finden Sie beispielsweise unter Windows 10 Spezifikationen.

  • Weitere allgemeine Informationen zur Problembehandlung finden Sie unter Bluescreen-Daten.