錯誤檢查0x18:REFERENCE_BY_POINTER
REFERENCE_BY_POINTER錯誤檢查的值為 0x00000018。 這表示對象的參考計數對於物件的目前狀態而言是非法的。
重要
本文適用於程式設計人員。 如果您是在使用計算機時收到藍色畫面錯誤碼的客戶,請參閱 針對藍色畫面錯誤進行疑難解答。
REFERENCE_BY_POINTER參數
參數 | 描述 |
---|---|
1 |
對象的物件類型,其參考計數正在降低。 |
2 |
物件,其參考計數正在降低。 |
3 |
已保留 |
4 |
已保留 |
原因
對象的參考計數對於物件的目前狀態而言是非法的。 每次驅動程式使用 物件的指標時,驅動程式都會呼叫核心例程,以增加對象的參考計數。 當驅動程式使用指標完成時,驅動程式會呼叫另一個核心例程,以將參考計數減少一個。
驅動程式必須比對增加 (reference) 和減少參考計數之例程的呼叫。 這個錯誤檢查是由對象參考計數中的不一致所造成。 一般而言,不一致的原因是驅動程式會減少對象的參考計數太多次,進行額外的呼叫來取值物件。 這個錯誤檢查可能會發生,因為對象的參考計數在物件仍有開啟句柄時,會傳回零。 如果對象的參考計數低於零,不論物件是否有開啟的句柄,也可能會發生此情況。
解決方法
請確定驅動程式符合呼叫的例程,以增加和減少 對象的參考計數。 請確定您的驅動程式不會對取值物件的例程進行額外的呼叫(請參閱參數 2)。
您可以使用除錯程式來協助分析此問題。 如需詳細資訊,請參閱 使用 Windows 調試程式進行損毀傾印分析 (WinDbg) 。 !analyze 偵錯延伸模組會顯示錯誤檢查的相關信息,而且有助於判斷根本原因。
若要在 物件上尋找句柄和指標計數,請使用 !object 調試程序命令。
kd> !object address
其中 address 是參數 2 中指定之對象的位址。
您也可以在此停止程式代碼的程式代碼中設定斷點,並嘗試向前單一步驟進入錯誤程序代碼。
如果您尚未準備好使用 Windows 調試程式來處理此問題,您可以使用一些基本的疑難解答技術。
請檢查系統登入 事件檢視器 是否有其他錯誤訊息,以協助識別造成此錯誤檢查的裝置或驅動程式。
如果在錯誤檢查訊息中識別驅動程式,請停用驅動程式,或向製造商檢查驅動程式更新。
確認已安裝的任何新硬體都與已安裝的 Windows 版本相容。 例如,您可以在 Windows 10 規格取得必要硬體的相關信息。
如需其他一般疑難解答資訊,請參閱 分析錯誤檢查藍屏幕數據。