錯誤檢查0x76:PROCESS_HAS_LOCKED_PAGES

PROCESS_HAS_LOCKED_PAGES錯誤檢查的值為 0x00000076。 這個錯誤檢查指出驅動程式無法在 I/O 作業之後釋放鎖定的頁面,或嘗試解除鎖定的頁面。

重要

本文適用于程式設計人員。 如果您是在使用電腦時收到藍色螢幕錯誤碼的客戶,請參閱 針對藍色畫面錯誤進行疑難排解

PROCESS_HAS_LOCKED_PAGES參數

參數 1 參數 2 參數 3 參數 4 錯誤原因

0x00

進程物件的指標

鎖定的頁面數目

驅動程式堆疊的指標會在啟用) 時 (。 否則,此參數為零。

正在終止的進程已鎖定記憶體頁面。 在進程終止之前,驅動程式必須解除鎖定進程內可能鎖定的任何記憶體。

0x01

驅動程式指定的 MDL

該程式中目前鎖定的記憶體分頁數目

如果驅動程式堆疊已啟用) ,則為該程式堆疊的指標 (。 否則,此參數為零。

驅動程式嘗試解除鎖定未鎖定的進程記憶體頁面。

原因

驅動程式無法將鎖定的頁面解除鎖定 (參數 1 值0x0) ,或驅動程式嘗試解除鎖定尚未鎖定或已解除鎖定的頁面, (參數 1 值0x1) 。

解決方案

!analyze偵錯延伸模組會顯示錯誤檢查的相關資訊,有助於判斷根本原因。

如果參數 1 值為 0x0

首先,在所有實體記憶體中,在目前進程指標上使用 !search 延伸模組。 此延伸模組可能會找到至少一個指向目前進程的 MDL) 記憶體描述元清單 (。 接下來,請在您找到的每個 MDL 上使用 !search ,以取得指向目前進程的 I/O 要求封包 (IRP) 。 從此 IRP 中,您可以識別哪些驅動程式正在流失頁面。

否則,您可以編輯登錄來偵測哪些驅動程式造成錯誤:

  1. \\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management 登錄機碼中,建立或編輯 TrackLockedPages 值,然後將它設定為 DWORD 1。

  2. 重新啟動電腦。

系統接著會儲存堆疊追蹤,因此您可以輕鬆地識別造成問題的驅動程式。 如果驅動程式再次造成相同的錯誤,則會發出 錯誤檢查0xCB (DRIVER_LEFT_LOCKED_PAGES_IN_PROCESS) ,而造成此錯誤的驅動程式名稱會顯示在藍色畫面上,並儲存在 位於 KiBugCheckDriver位置 (PUNICODE_STRING) 的記憶體中。

如果參數 1 值為 0x1

檢查鎖定和解除鎖定記憶體的驅動程式原始程式碼,並嘗試找出未先鎖定記憶體的實例。