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