Comprobación de errores 0x76: PROCESS_HAS_LOCKED_PAGES
La comprobación de errores de PROCESS_HAS_LOCKED_PAGES tiene un valor de 0x00000076. Esta comprobación de errores indica que un controlador no pudo liberar páginas bloqueadas después de una operación de E/S o que intentó desbloquear páginas que ya estaban desbloqueadas.
Importante
Este artículo es para programadores. Si es un cliente que ha recibido un código de error de pantalla azul mientras usa el equipo, consulte Solución de errores de pantalla azul.
parámetros de PROCESS_HAS_LOCKED_PAGES
Parámetro 1 | Parámetro 2 | Parámetro 3 | Parámetro 4 | Causa del error |
---|---|---|---|---|
0x00 |
Puntero al objeto de proceso |
Número de páginas bloqueadas |
Puntero a pilas de controladores (si están habilitadas). De lo contrario, este parámetro es cero. |
El proceso que finaliza tiene páginas de memoria bloqueadas. El controlador debe desbloquear cualquier memoria que pueda haber bloqueado en un proceso, antes de que finalice el proceso. |
0x01 |
MDL especificado por el controlador |
Número actual de páginas de memoria bloqueadas en ese proceso |
Puntero a las pilas de controladores para ese proceso (si están habilitados). De lo contrario, este parámetro es cero. |
El controlador está intentando desbloquear las páginas de memoria del proceso que no están bloqueadas. |
Causa
El controlador no pudo desbloquear páginas bloqueadas (el valor del parámetro 1 es 0x0) o el controlador está intentando desbloquear páginas que no se han bloqueado o que ya se han desbloqueado (el valor del parámetro 1 es 0x1).
Resolución
La extensión !analyze debug muestra información sobre la comprobación de errores y puede ser útil para determinar la causa principal.
Si el valor del parámetro 1 es 0x0
En primer lugar, use la extensión !search en el puntero de proceso actual en toda la memoria física. Esta extensión puede encontrar al menos una lista de descriptores de memoria (MDL) que apunte al proceso actual. A continuación, use !search en cada MDL que encuentre para obtener el paquete de solicitud de E/S (IRP) que apunta al proceso actual. Desde este IRP, puede identificar qué controlador está filtrando las páginas.
De lo contrario, puede detectar qué controlador provocó el error editando el Registro:
En la clave del Registro \\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management , cree o edite el valor TrackLockedPages y, a continuación, establézcalo en DWORD 1.
Reinicie el equipo.
A continuación, el sistema guarda seguimientos de pila, por lo que puede identificar fácilmente el controlador que provocó el problema. Si el controlador vuelve a producir el mismo error, se emite la comprobación de errores 0xCB (DRIVER_LEFT_LOCKED_PAGES_IN_PROCESS) y el nombre del controlador que provoca este error se muestra en la pantalla azul y se almacena en memoria en la ubicación (PUNICODE_STRING) KiBugCheckDriver.
Si el valor del parámetro 1 es 0x1
Examine el código fuente del controlador que bloquea y desbloquea la memoria e intente localizar una instancia en la que se desbloquea la memoria sin bloquearse primero.