www. On IT Road .com
原因
驱动程序无法解锁它锁定的页面(参数 1 值为 0x0),或者驱动程序试图解锁尚未锁定或者已解锁的页面(参数 1 值为 0x1)。
解决方法
!analyze 调试扩展显示有关错误检查的信息,有助于确定根本原因。
详细步骤查看我们的教程 在windows 中使用WinDBG 调试dmp文件
如果参数 1 值为 0x0
首先在整个物理内存中的当前进程指针上使用 !search 扩展。
此扩展可能会找到至少一个指向当前进程的内存描述符列表 (MDL)。
接下来,对找到的每个 MDL 使用 !search 以获取指向当前进程的 I/O 请求数据包 (IRP)。
从这个 IRP,我们可以确定哪个驱动程序正在泄漏页面。
否则,我们可以通过编辑注册表来检测导致错误的驱动程序:
- 在 \HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management 注册表项中,创建或者编辑 TrackLockedPages 值,然后将其设置为等于 DWORD 1 .
- 重新启动计算机。
然后系统会保存堆栈跟踪,因此我们可以轻松识别导致问题的驱动程序。
如果驱动程序再次导致相同的错误,则发出错误检查 0xCB (DRIVER_LEFT_LOCKED_PAGES_IN_PROCESS),导致此错误的驱动程序的名称显示在蓝屏上并存储在内存中的位置 (PUNICODE_STRING) KiBugCheckDriver 。
如果参数 1 值为 0x1
检查锁定和解锁内存的驱动程序源代码,并尝试定位在未首先锁定的情况下解锁内存的实例。
PROCESS_HAS_LOCKED_PAGES 错误检查的值为 0x00000076.
此错误检查表明驱动程序未能在 I/O 操作后释放锁定的页面,或者它试图解锁已经解锁的页面。
PROCESS_HAS_LOCKED_PAGES 参数
Parameter 1 | 参数 2 | 参数 3 | 参数 4 | 错误原因 |
---|---|---|---|---|
0x00 | 指向进程对象的指针 | 锁定页面 | 的数量指向驱动程序堆栈的指针(如果它们已启用)。否则,此参数为零。 | 被终止的进程锁定了内存页。在进程终止之前,驱动程序必须解锁它可能在进程中锁定的任何内存。 |
0x01 | 由驱动程序指定的 MDL | 该进程中锁定内存页的当前数量 | 指向该进程的驱动程序堆栈的指针(如果它们已启用)。否则,此参数为零。 | 驱动程序正在尝试解锁未锁定的进程内存页。 |
日期:2020-09-17 00:16:02 来源:oir作者:oir