Comprobación de errores 0xA: IRQL_NOT_LESS_OR_EQUAL

La comprobación de errores de IRQL_NOT_LESS_OR_EQUAL tiene un valor de 0x0000000A. Esta comprobación de errores indica que Microsoft Windows o un controlador en modo kernel accedieron a la memoria paginada en una dirección no válida mientras se encuentra en un nivel de solicitud de interrupción elevado (IRQL). La causa suele ser un puntero incorrecto o un problema de paginación.

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 IRQL_NOT_LESS_OR_EQUAL

Parámetro Descripción
1 Dirección de memoria virtual a la que no se pudo acceder.

Use !pool en esta dirección para ver si se trata de un grupo paginado. Otros comandos que pueden ser útiles para recopilar información sobre el error son !pte, !address y ln (Enumerar símbolos más cercanos).
2 IRQL en el momento del error.

Valores:
2 - IrQL se DISPATCH_LEVEL en el momento del error.
3 Campo de bits que describe la operación que provocó el error. Tenga en cuenta que el bit 3 solo está disponible en conjuntos de chips que admiten este nivel de informes.

Valores de bit 0:
0 - Operación de lectura
1 - Operación de escritura

Valores de bit 3:
0: no una operación de ejecución
1 - Operación de ejecución

Valores combinados de bit 0 y 3 bits:
0x0: error al intentar leer desde la dirección del parámetro 1
0x1: error al intentar escribir en la dirección del parámetro 1
0x8: error al intentar ejecutar código desde la dirección del parámetro 1

Este valor se debe a:
  • Llamar a una función que no se puede llamar en DISPATCH_LEVEL mientras está en DISPATCH_LEVEL.
  • Olvidando liberar un bloqueo por subproceso.
  • Marcar el código como paginable cuando debe ser no paginable. Por ejemplo, si el código adquiere un interbloqueo o se llama a en una llamada a procedimiento diferido.
4 Puntero de instrucción en el momento del error.

Use el comando ln (Enumerar símbolos más cercanos) en esta dirección para ver el nombre de la función.

Causa

Esta comprobación de errores se debe a controladores de dispositivos en modo kernel que usan direcciones incorrectas.

Esta comprobación de errores indica que se ha intentado acceder a una dirección no válida mientras se encuentra en un nivel de solicitud de interrupción elevado (IRQL). La causa es un puntero de memoria incorrecta o un problema de paginación con el código del controlador de dispositivo.

Las instrucciones generales que puede usar para clasificar el tipo de error de codificación que provocó la comprobación de errores son las siguientes:

  • Si el parámetro 1 es menor que 0x1000, es probable que el problema sea una desreferencia de puntero NULL.

  • Si !pool informa de que el parámetro 1 es un grupo paginado (u otros tipos de memoria paginable), el IRQL es demasiado alto para acceder a estos datos. Ejecute en un IRQL inferior o asigne los datos en el grupo no paginado.

  • Si el parámetro 3 indica que la comprobación de errores era un intento de ejecutar código paginable, irQL es demasiado alto para llamar a esta función. Ejecute en un IRQL inferior o no marque el código como paginable.

  • Puede ser un puntero incorrecto causado por el volteo de bits o uso después de liberarse. Investigue la validez del parámetro 1 con !pte, !address y ln (enumerar símbolos más cercanos).

Resolución

Si hay disponible un depurador de kernel, obtenga un seguimiento de pila. Para empezar, ejecute la extensión !analyze debugger para mostrar información sobre la comprobación de errores. La extensión !analyze puede ser útil para determinar la causa principal. A continuación, escriba uno de los comandos k* (display stack backtrace) para ver la pila de llamadas.

Recopilación de información

Examine el nombre del controlador si aparece en la pantalla azul.

Compruebe el inicio de sesión del sistema Visor de eventos en busca de otros mensajes de error que puedan ayudar a identificar el dispositivo o el controlador que está causando el error. Busque errores críticos en el registro del sistema que se produjeron en el mismo período de tiempo que la pantalla azul.

Comprobador de controladores

El Comprobador de controladores es una herramienta que se ejecuta en tiempo real para examinar el comportamiento de los controladores. Por ejemplo, el Comprobador de controladores comprueba el uso de recursos de memoria, como los grupos de memoria. Si identifica errores en la ejecución del código de controlador, crea proactivamente una excepción para permitir que esa parte del código del controlador se examine aún más. El Administrador de comprobadores de controladores está integrado en Windows y está disponible en todos los equipos Windows.

Para iniciar el Administrador de comprobadores de controladores, escriba comprobador en un símbolo del sistema. Puede configurar qué controladores comprobar. El código que comprueba que los controladores agregan sobrecarga a medida que se ejecuta, por lo que intente comprobar el menor número de controladores posible. Para obtener más información, consulte Comprobador de controladores.

El código siguiente muestra un ejemplo de depuración:

kd> .bugcheck       [Lists bug check data.]
Bugcheck code 0000000a
Arguments 00000000 0000001c 00000000 00000000

kd> kb [Lists the stack trace.]
ChildEBP RetAddr  Args to Child
8013ed5c 801263ba 00000000 00000000 e12ab000 NT!_DbgBreakPoint
8013eecc 801389ee 0000000a 00000000 0000001c NT!_KeBugCheckEx+0x194
8013eecc 00000000 0000000a 00000000 0000001c NT!_KiTrap0E+0x256
8013ed5c 801263ba 00000000 00000000 e12ab000
8013ef64 00000246 fe551aa1 ff690268 00000002 NT!_KeBugCheckEx+0x194

kd> kv [Lists the trap frames.]
ChildEBP RetAddr  Args to Child
8013ed5c 801263ba 00000000 00000000 e12ab000 NT!_DbgBreakPoint (FPO: [0,0,0])
8013eecc 801389ee 0000000a 00000000 0000001c NT!_KeBugCheckEx+0x194
8013eecc 00000000 0000000a 00000000 0000001c NT!_KiTrap0E+0x256 (FPO: [0,0] TrapFrame @ 8013eee8)
8013ed5c 801263ba 00000000 00000000 e12ab000
8013ef64 00000246 fe551aa1 ff690268 00000002 NT!_KeBugCheckEx+0x194

kd> .trap 8013eee8 [Gets the registers for the trap frame at the time of the fault.]
eax=dec80201 ebx=ffdff420 ecx=8013c71c edx=000003f8 esi=00000000 edi=87038e10
eip=00000000 esp=8013ef5c ebp=8013ef64 iopl=0         nv up ei pl nz na pe nc
cs=0008  ss=0010  ds=0023  es=0023  fs=0030  gs=0000             efl=00010202
ErrCode = 00000000
00000000 ???????????????    [The current instruction pointer is NULL.]

kd> kb       [Gives the stack trace before the fault.]
ChildEBP RetAddr  Args to Child
8013ef68 fe551aa1 ff690268 00000002 fe5620d2 NT!_DbgBreakPoint
8013ef74 fe5620d2 fe5620da ff690268 80404690
NDIS!_EthFilterIndicateReceiveComplete+0x31
8013ef64 00000246 fe551aa1 ff690268 00000002 elnkii!_ElnkiiRcvInterruptDpc+0x1d0

Comentarios

El error que genera esta comprobación de errores suele producirse después de la instalación de un controlador de dispositivo defectuoso, servicio del sistema o BIOS.

Si encuentra la comprobación de errores 0xA al actualizar a una versión más reciente de Windows, el error puede deberse a un controlador de dispositivo, un servicio del sistema, un detector de virus o una herramienta de copia de seguridad que no es compatible con la nueva versión.

Resolución de un problema de hardware defectuoso: Si el hardware se ha agregado recientemente al sistema, quítelo para ver si el error se repite. Si se ha producido un error en el hardware existente, quite o reemplace el componente defectuoso. Ejecute diagnósticos de hardware proporcionados por el fabricante del sistema. Para obtener más información sobre estos procedimientos, consulta el manual del propietario del ordenador.

Resolución de un problema de servicio del sistema defectuoso: Deshabilite el servicio y confirme si hacerlo resuelve el error. Si es así, póngase en contacto con el fabricante del servicio del sistema sobre una posible actualización. Si el error se produce durante el inicio del sistema, investigue las opciones de reparación de Windows. Para obtener más información, consulte Opciones de recuperación en Windows 10.

Resolución de un problema de software antivirus: Deshabilite el programa y confirme si hacerlo resuelve el error. Si es así, póngase en contacto con el fabricante del programa sobre una posible actualización.

Para obtener información general sobre cómo solucionar errores, consulte Datos de pantalla azul.

Consulte también

Referencia de código de comprobación de errores