Comprobación de errores 0xC4: DRIVER_VERIFIER_DETECTED_VIOLATION
La comprobación de errores DRIVER_VERIFIER_DETECTED_VIOLATION tiene un valor de 0x000000C4. Este es el código de comprobación de errores general para detectar errores irrecuperables encontrados por el Comprobador de controladores. Para obtener más información, consulte Control de una comprobación de errores cuando el comprobador de controladores está habilitado.
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 DRIVER_VERIFIER_DETECTED_VIOLATION
El parámetro 1 identifica el tipo de infracción. El significado de los parámetros restantes varía con el valor del parámetro 1. Los valores de parámetro se describen en la tabla siguiente.
Nota Si tiene problemas para ver las 5 columnas de esta tabla, pruebe lo siguiente:
- Expanda la ventana del explorador al tamaño completo.
- Coloque el cursor en la tabla y use las teclas de dirección para desplazarse a la izquierda y a la derecha.
0x00 a 0x70
Parámetro 1 | Parámetro 2 | Parámetro 3 | Parámetro 4 | Causa del error |
---|---|---|---|---|
0x00 | IRQL actual | Tipo de grupo | Número de bytes | El controlador solicitó una asignación de grupo de bytes cero. |
0x01 | IRQL actual | Tipo de grupo | Tamaño de la asignación, en bytes | El controlador intentó asignar memoria paginada con IRQL > APC_LEVEL. |
0x02 | IRQL actual | Tipo de grupo | Tamaño de la asignación, en bytes | El controlador intentó asignar memoria no paginada con IRQL > DISPATCH_LEVEL. |
0x03 | El autor de la llamada está intentando asignar más de una página de debe realizarse correctamente en el grupo, pero una página es el máximo permitido por esta API. | |||
0x10 | Dirección incorrecta | 0 | 0 | El controlador intentó liberar una dirección que no se devolvió desde una llamada de asignación. |
0x11 | IRQL actual | Tipo de grupo | Dirección del grupo | El controlador intentó liberar el grupo paginado con IRQL > APC_LEVEL. |
0x12 | IRQL actual | Tipo de grupo | Dirección del grupo | El controlador intentó liberar un grupo no paginado con IRQL > DISPATCH_LEVEL. |
0x13 o 0x14 | Reservado | Puntero al encabezado del grupo | Contenido del encabezado del grupo | El controlador intentó liberar el grupo de memoria que ya estaba liberado. |
0x15 | Entrada del temporizador | Tipo de grupo | Dirección del grupo que se libera | El grupo que el autor de la llamada está intentando liberar contiene un temporizador activo. |
0x16 | Reservado | Dirección del grupo | 0 | El controlador intentó liberar el grupo en una dirección incorrecta o el controlador pasó parámetros no válidos a una rutina de memoria. |
0X17 | Entrada de recursos | Tipo de grupo | Dirección del grupo que se libera | El grupo que el autor de la llamada está intentando liberar contiene un ERESOURCE activo. |
0x30 | IRQL actual | IRQL solicitado | 0 | El controlador pasó un parámetro no válido a KeRaiseIrql. (El parámetro era un valor inferior al IRQL actual o un valor mayor que HIGH_LEVEL. Esto puede ser el resultado de usar un parámetro sin inicializar). |
0x31 | IRQL actual | IRQL solicitado | 0: El nuevo IRQL es incorrecto 1: el nuevo IRQL no es válido dentro de una rutina DPC | El controlador pasó un parámetro no válido a KeLowerIrql. (El parámetro era un valor mayor que el IRQL actual o un valor mayor que HIGH_LEVEL. Esto puede ser el resultado de usar un parámetro sin inicializar). |
0x32 | IRQL actual | Dirección de bloqueo de número | 0 | El controlador llamado KeReleaseSpinLock en un IRQL distinto de DISPATCH_LEVEL. (Esto puede deberse a una doble liberación de un bloqueo de número). |
0x33 | IRQL actual | Dirección de exclusión mutua rápida | 0 | El controlador intentó adquirir una exclusión mutua rápida con IRQL > APC_LEVEL. |
0x34 | IRQL actual | Recuento de deshabilitaciones de APC de subprocesos | Dirección de exclusión mutua rápida | El controlador intentó liberar la exclusión mutua rápida en un IRQL distinto de APC_LEVEL. |
0x35 | IRQL actual | Dirección de bloqueo de número | IRQL anterior | El kernel liberó un bloqueo de número con IRQL no igual a DISPATCH_LEVEL. |
0x36 | IRQL actual | Número de bloqueo de número | IRQL anterior | El kernel liberó un bloqueo de número en cola con IRQL no igual a DISPATCH_LEVEL. |
0x37 | IRQL actual | Recuento de deshabilitaciones de APC de subprocesos | Recurso | El controlador intentó adquirir un recurso, pero las API no están deshabilitadas. |
0x38 | IRQL actual | Recuento de deshabilitaciones de APC de subprocesos | Recurso | El controlador intentó liberar un recurso, pero las API no están deshabilitadas. |
0x39 | IRQL actual | Recuento de deshabilitaciones de APC de subprocesos | Mutex | El controlador intentó adquirir una exclusión mutua "no segura" con IRQL no igual a APC_LEVEL en la entrada. |
0x3A | IRQL actual | Recuento de deshabilitaciones de APC de subprocesos | Mutex | El controlador intentó liberar una exclusión mutua "no segura" con IRQL no igual a APC_LEVEL en la entrada. |
0x3B | IRQL actual | Objeto en el que se va a esperar | Parámetro de tiempo de espera | Se llama a la rutina KeWaitXxx en DISPATCH_LEVEL o superior. |
0x3C | Identificador pasado a la rutina | Tipo de objeto | 0 | El controlador llamado ObReferenceObjectByHandle con un identificador incorrecto. |
0x3D | 0 | 0 | Dirección del recurso incorrecto | El controlador pasó un recurso incorrecto (no asignado) a ExAcquireResourceExclusive. |
0x3E | 0 | 0 | 0 | El controlador llamado KeLeaveCriticalRegion para un subproceso que no está actualmente en una región crítica. |
0x3F | Dirección del objeto | Nuevo recuento de referencias de objetos. -1: caso de desreferenciación 1: caso de referencia | 0 | El controlador aplicó ObReferenceObject a un objeto que tiene un recuento de referencias de cero o el controlador aplicó ObDereferenceObject a un objeto que tiene un recuento de referencias de cero. |
0x40 | IRQL actual | Dirección de bloqueo de número | 0 | El controlador llamado KeAcquireSpinLockAtDpcLevel con IRQL < DISPATCH_LEVEL. |
0x41 | IRQL actual | Dirección de bloqueo de número | 0 | El controlador llamado KeReleaseSpinLockFromDpcLevel con IRQL < DISPATCH_LEVEL. |
0x42 | IRQL actual | Dirección de bloqueo de número | 0 | El controlador llamado KeAcquireSpinLock con IRQL > DISPATCH_LEVEL. |
0x51 | Dirección base de asignación | Dirección de la referencia más allá de la asignación | Número de bytes cargados | El controlador intentó liberar memoria después de haber escrito después del final de la asignación. Una comprobación de errores con este parámetro solo se produce cuando la opción Seguimiento de grupo del Comprobador de controladores está activa. |
0x52 | Dirección base de asignación | Entrada hash | Número de bytes cargados | El controlador intentó liberar memoria después de haber escrito después del final de la asignación. Una comprobación de errores con este parámetro solo se produce cuando la opción Seguimiento de grupo del Comprobador de controladores está activa. |
0x53 | Dirección base de asignación | Encabezado | Reservado | El controlador intentó liberar memoria después de haber escrito después del final de la asignación. Una comprobación de errores con este parámetro solo se produce cuando la opción Seguimiento de grupo del Comprobador de controladores está activa. |
0x54 | Dirección base de asignación | Reservado | Tamaño de hash del grupo | El controlador intentó liberar memoria después de haber escrito después del final de la asignación. Una comprobación de errores con este parámetro solo se produce cuando la opción Seguimiento de grupo del Comprobador de controladores está activa. |
0x59 | Dirección base de asignación | Listindex | Reservado | El controlador intentó liberar memoria después de haber escrito después del final de la asignación. Una comprobación de errores con este parámetro solo se produce cuando la opción Seguimiento de grupo del Comprobador de controladores está activa. |
0x60 | Bytes asignados desde el grupo paginado | Bytes asignados desde un grupo no paginado | Número total de asignaciones que no se liberaron | El controlador se descarga sin liberar primero sus asignaciones de grupo. Una comprobación de errores con este parámetro solo se produce cuando la opción Seguimiento de grupo del Comprobador de controladores está activa. |
0x61 | Bytes asignados desde el grupo paginado | Bytes asignados desde un grupo no paginado | Número total de asignaciones que no se liberaron | Un subproceso de controlador está intentando asignar memoria de grupo mientras se descarga el controlador. Una comprobación de errores con este parámetro solo se produce cuando la opción Seguimiento de grupo del Comprobador de controladores está activa. |
0x62 | Nombre del controlador | Reservado | Número total de asignaciones que no se liberaron, incluidos el grupo paginado y no paginado | El controlador se descarga sin liberar primero sus asignaciones de grupo. Una comprobación de errores con este parámetro solo se produce cuando la opción Seguimiento de grupo del Comprobador de controladores está activa. Escriba !comprobador 3 drivername.sys para obtener información sobre las asignaciones filtradas que provocaron la comprobación de errores. |
0x6F | Dirección MDL | Página física bloqueada | Página física más alta del sistema | MmProbeAndLockPages llamado en páginas que no están en la base de datos PFN. Normalmente, se trata de un controlador que llama a esta rutina para bloquear su propia RAM de doble puerto privada. No solo es necesario, sino que también puede dañar la memoria en las máquinas con RAM física no contigua. |
0x70 a 0x91
Parámetro 1 | Parámetro 2 | Parámetro 3 | Parámetro 4 | Causa del error |
---|---|---|---|---|
0x70 | IRQL actual | Dirección MDL | Modo de acceso | El controlador llamado MmProbeAndLockPages con IRQL > DISPATCH_LEVEL. |
0x71 | IRQL actual | Dirección MDL | Dirección del proceso | El controlador llamado MmProbeAndLockProcessPages con IRQL > DISPATCH_LEVEL. |
0x72 | IRQL actual | Dirección MDL | Dirección del proceso | El controlador llamado MmProbeAndLockSelectedPages con IRQL > DISPATCH_LEVEL. |
0x73 | IRQL actual | En Windows de 32 bits: 32 bits bajos de la dirección física En Windows de 64 bits: la dirección física de 64 bits | Número de bytes | El controlador llamado MmMapIoSpace con IRQL > DISPATCH_LEVEL. |
0x74 | IRQL actual | Dirección MDL | Modo de acceso | El controlador llamado MmMapLockedPages en modo kernel con IRQL > DISPATCH_LEVEL. |
0x75 | IRQL actual | Dirección MDL | Modo de acceso | El controlador llamado MmMapLockedPages en modo de usuario con IRQL > APC_LEVEL. |
0x76 | IRQL actual | Dirección MDL | Modo de acceso | El controlador llamado MmMapLockedPagesSpecifyCache en modo kernel con IRQL > DISPATCH_LEVEL. |
0x77 | IRQL actual | Dirección MDL | Modo de acceso | El controlador llamado MmMapLockedPagesSpecifyCache en modo de usuario con IRQL > APC_LEVEL. |
0x78 | IRQL actual | Dirección MDL | 0 | El controlador llamado MmUnlockPages con IRQL > DISPATCH_LEVEL. |
0x79 | IRQL actual | Dirección virtual que se está desasignación | Dirección MDL | El controlador llamado MmUnmapLockedPages en modo kernel con IRQL > DISPATCH_LEVEL. |
0x7A | IRQL actual | Dirección virtual que se está desasignación | Dirección MDL | El controlador llamado MmUnmapLockedPages en modo de usuario con IRQL > APC_LEVEL. |
0x7B | IRQL actual | Dirección virtual que se está desasignación | Número de bytes | El controlador llamado MmUnmapIoSpace con IRQL > APC_LEVEL. |
0x7C | Dirección MDL | Marcas MDL | 0 | El controlador llamado MmUnlockPages y pasó un MDL cuyas páginas nunca se bloquearon correctamente. |
0x7D | Dirección MDL | Marcas MDL | 0 | El controlador llamado MmUnlockPages y pasó una MDL cuyas páginas proceden del grupo no paginado. (Estos nunca deben desbloquearse). |
0x7E | IRQL actual | DISPATCH_LEVEL | 0 | El controlador llamado MmAllocatePagesForMdl, MmAllocatePagesForMdlEx o MmFreePagesFromMdl con IRQL > DISPATCH_LEVEL. |
0x7F | IRQL actual | Dirección MDL | Marcas MDL | El controlador llamado BuildMdlForNonPagedPool y pasó una MDL cuyas páginas proceden del grupo paginado. |
0x80 | IRQL actual | Dirección del evento | 0 | El controlador llamado KeSetEvent con irQL > DISPATCH_LEVEL. |
0x81 | Dirección MDL | Marcas MDL | 0 | El controlador llamado MmMapLockedPages. (En su lugar, debe usar MmMapLockedPagesSpecifyCache , con el parámetro BugCheckOnFailure establecido en FALSE). |
0x82 | Dirección MDL | Marcas MDL | 0 | El controlador llamado MmMapLockedPagesSpecifyCache con el parámetro BugCheckOnFailure es igual a TRUE. (Este parámetro debe establecerse en FALSE). |
0x83 | Inicio del intervalo de direcciones físicos que se va a asignar | Número de bytes que se van a asignar | Primer número de marco de página que no está bloqueado | El controlador llamado MmMapIoSpace sin haber bloqueado las páginas MDL. Las páginas físicas representadas por el intervalo de direcciones físicos que se asignan deben haberse bloqueado antes de realizar esta llamada. |
0x85 | Dirección MDL | Número de páginas que se van a asignar | Primer número de marco de página que no está bloqueado | El controlador llamado MmMapLockedPages sin haber bloqueado las páginas MDL. |
0x89 | Dirección MDL | Puntero a la página que no es de memoria en MDL | Número de página que no es de memoria en MDL | Un MDL no está marcado como "E/S", pero contiene direcciones de página que no son de memoria. |
0x91 | Reservado | Reservado | Reservado | Las pilas conmutadas del controlador mediante un método que no es compatible con el sistema operativo. La única manera admitida de extender una pila de modo kernel es mediante KeExpandKernelStackAndCallout. |
0xA0 a 0x140
Parámetro 1 | Parámetro 2 | Parámetro 3 | Parámetro 4 | Causa del error |
---|---|---|---|---|
0xA0 | Puntero al IRP que realiza la solicitud de lectura o escritura | Objeto de dispositivo del dispositivo inferior | Número del sector en el que se detectó el error | Se detectó un error de comprobación de redundancia cíclica (CRC) en un disco duro. Una comprobación de errores con este parámetro solo se produce cuando la opción Comprobación de integridad de disco del Comprobador de controladores está activa. |
0xA1 | Copia del IRP que realiza la solicitud de lectura o escritura. (Se ha completado el IRP real). | Objeto de dispositivo del dispositivo inferior | Número del sector en el que se detectó el error | Se detectó un error CRC en un sector (asincrónicamente). Una comprobación de errores con este parámetro solo se produce cuando la opción Comprobación de integridad de disco del Comprobador de controladores está activa. |
0xA2 | IRP que realiza la solicitud de lectura o escritura, o una copia de este IRP | Objeto de dispositivo del dispositivo inferior | Número del sector en el que se detectó el error | Las copias de suma de comprobación CRCDISK no coinciden. Podría tratarse de un error de paginación. Una comprobación de errores con este parámetro solo se produce cuando la opción Comprobación de integridad de disco del Comprobador de controladores está activa. |
0xB0 | Dirección MDL | Marcas MDL | Marcas MDL incorrectas | El controlador llamado MmProbeAndLockPages para una MDL con marcas incorrectas. Por ejemplo, el controlador pasó una MDL creada por MmBuildMdlForNonPagedPool a MmProbeAndLockPages. |
0xB1 | Dirección MDL | Marcas MDL | Marcas MDL incorrectas | El controlador llamado MmProbeAndLockProcessPages para una MDL con marcas incorrectas. Por ejemplo, el controlador pasó una MDL creada por MmBuildMdlForNonPagedPool a MmProbeAndLockProcessPages. |
0xB2 | Dirección MDL | Marcas MDL | Marcas MDL incorrectas | El controlador llamado MmMapLockedPages para una MDL con marcas incorrectas. Por ejemplo, el controlador pasó una MDL que ya está asignada a una dirección del sistema o que no estaba bloqueada en MmMapLockedPages. |
0xB3 | Dirección MDL | Marcas MDL | Faltan marcas MDL (se esperaba al menos una) | El controlador llamado MmMapLockedPages para una MDL con marcas incorrectas. Por ejemplo, el controlador pasó una MDL que no está bloqueada a MmMapLockedPages. |
0xB4 | Dirección MDL | Marcas MDL | Marca MDL parcial inesperada | El controlador llamado MmUnlockPages para una MDL parcial. Un MDL parcial es uno creado por IoBuildPartialMdl. |
0xB5 | Dirección MDL | Marcas MDL | Marca MDL parcial inesperada | MmUnmapLockedPages llamado en una MDL parcial (creada con IoBuildPartialMdl). |
0xB6 | Dirección MDL | Marcas MDL | Falta la marca MDL | MmUnmapLockedPages llama a en una MDL que no está asignada a una dirección del sistema. |
0xB7 | Número de páginas físicas dañadas. | Primera página física dañada. | Última página física dañada. | El BIOS del sistema ha dañado la memoria física baja durante una transición de suspensión. |
0xB8 | Dirección MDL | Marcas MDL | Reservado | Las páginas descritas por MDL todavía se asignan. El controlador debe desasignación de las páginas antes de llamar a IoFreeMdl. |
0xB9 | Dirección que no se asigna. | Dirección MDL. | Reservado | MmUnmapLockedPages llamó con una dirección de espacio de usuario incorrecta. |
0xC0 | Dirección del IRP | 0 | Reservado | El controlador llamado IoCallDriver con interrupciones deshabilitadas. |
0xC1 | Dirección de la rutina de distribución del controlador | Reservado | Reservado | Se devolvió una rutina de distribución de controladores con interrupciones deshabilitadas. |
0xC2 | 0 | 0 | 0 | El controlador llamó a una rutina de envío de E/S rápida después de deshabilitar las interrupciones. |
0xC3 | Dirección de la rutina de envío de E/S rápida del controlador | Reservado | Reservado | Se devolvió una rutina de distribución de E/S rápida del controlador con interrupciones deshabilitadas. |
0xC5 | Dirección de la rutina de distribución del controlador | Recuento de deshabilitaciones de APC del subproceso actual | Recuento de deshabilitaciones de APC del subproceso antes de llamar a la rutina de distribución del controlador | Una rutina de distribución de controladores ha cambiado el recuento de deshabilitación de APC del subproceso. El recuento de deshabilitaciones de APC se disminuye cada vez que un controlador llama a KeEnterCriticalRegion, FsRtlEnterFileSystem o adquiere una exclusión mutua. El recuento de deshabilitaciones de APC se incrementa cada vez que un controlador llama a KeLeaveCriticalRegion, KeReleaseMutex o FsRtlExitFileSystem. Dado que estas llamadas siempre deben estar en pares, el recuento de deshabilitaciones de APC debe ser cero siempre que se salga de un subproceso. Un valor negativo indica que un controlador ha deshabilitado las llamadas de APC sin volver a habilitarlas. Un valor positivo indica que el valor inverso es true. |
0xC6 | Dirección de la rutina de envío de E/S rápida del controlador | Recuento de deshabilitación de APC del subproceso actual | Recuento de deshabilitaciones de APC del subproceso antes de llamar a la rutina de distribución del controlador de E/S rápido | Una rutina de distribución de E/S rápida del controlador ha cambiado el recuento de deshabilitación de APC del subproceso. El recuento de deshabilitaciones de APC se disminuye cada vez que un controlador llama a KeEnterCriticalRegion, FsRtlEnterFileSystem o adquiere una exclusión mutua. El recuento de deshabilitaciones de APC se incrementa cada vez que un controlador llama a KeLeaveCriticalRegion, KeReleaseMutex o FsRtlExitFileSystem. Dado que estas llamadas siempre deben estar en pares, el recuento de deshabilitaciones de APC debe ser cero siempre que se salga de un subproceso. Un valor negativo indica que un controlador ha deshabilitado las llamadas de APC sin volver a habilitarlas. Un valor positivo indica que el valor inverso es true. |
0xCA | Dirección de la lista de búsqueda | Reservado | Reservado | El controlador ha intentado volver a inicializar una lista de aspecto. |
0xCB | Dirección de la lista de búsqueda | Reservado | Reservado | El controlador ha intentado eliminar una lista de lookaside sin inicializar. |
0xCC | Dirección de la lista de búsqueda | Dirección inicial de la asignación del grupo | Tamaño de la asignación del grupo | El controlador ha intentado liberar una asignación de grupo que contiene una lista de búsqueda activa. |
0xCD | Dirección de la lista de búsqueda | Tamaño de bloque especificado por el autor de la llamada | Tamaño mínimo de bloque admitido | El controlador ha intentado crear una lista de aspecto con un tamaño de bloque de asignación demasiado pequeño. |
0xD0 | Dirección de la estructura ERESOURCE | Reservado | Reservado | El controlador ha intentado volver a inicializar una estructura ERESOURCE. |
0xD1 | Dirección de la estructura ERESOURCE | Reservado | Reservado | El controlador ha intentado eliminar una estructura ERESOURCE no inicializada. |
0xD2 | Dirección de la estructura ERESOURCE | Dirección inicial de la asignación del grupo | Tamaño de la asignación del grupo | El controlador ha intentado liberar una asignación de grupo que contiene una estructura ERESOURCE activa. |
0xD5 | Dirección de la estructura de IO_REMOVE_LOCK creada por la versión de compilación comprobada del controlador | Etiqueta IoReleaseRemoveLock actual | Reservado | La etiqueta IoReleaseRemoveLock actual no coincide con la etiqueta IoAcquireRemoveLock anterior. Si el controlador que llama a IoReleaseRemoveLock no está en una compilación activada, el parámetro 2 es la dirección de la estructura de instantáneas IO_REMOVE_LOCK creada por el comprobador de controladores en nombre del controlador. En este caso, la dirección de la estructura de IO_REMOVE_LOCK utilizada por el controlador no se usa en absoluto, ya que el Comprobador de controladores reemplaza la dirección de bloqueo para todas las API de bloqueo de eliminación. Una comprobación de errores con este parámetro solo se produce cuando la opción Verificación de E/S del comprobador de controladores está activa. |
0xD6 | Dirección de la estructura de IO_REMOVE_LOCK creada por la versión de compilación comprobada del controlador | Etiqueta que no coincide con la etiqueta IoAcquireRemoveLock anterior | Etiqueta IoAcquireRemoveLock anterior | La etiqueta IoReleaseRemoveLockAndWait actual no coincide con la etiqueta IoAcquireRemoveLock anterior. Si el controlador que llama a IoReleaseRemoveLock no es una compilación activada, el parámetro 2 es la dirección de la estructura de la sombra IO_REMOVE_LOCK creada por el comprobador de controladores en nombre del controlador. En este caso, la dirección de la estructura de IO_REMOVE_LOCK utilizada por el controlador no se usa en absoluto, ya que el Comprobador de controladores reemplaza la dirección de bloqueo para todas las API de bloqueo de eliminación. Una comprobación de errores con este parámetro solo se produce cuando la opción Verificación de E/S del comprobador de controladores está activa. |
0xD7 | Dirección de la compilación activada Quitar estructura de bloqueo que el comprobador de controladores usa internamente | Dirección de la estructura Remove Lock especificada por el controlador | Reservado | No se puede volver a inicializar un bloqueo de eliminación, incluso después de llamar a IoReleaseRemoveLockAndWait, porque es posible que otros subprocesos sigan usando ese bloqueo (mediante una llamada a IoAcquireRemoveLock). El controlador debe asignar el bloqueo Remove dentro de su extensión de dispositivo e inicializarlo una sola vez. El bloqueo se eliminará junto con la extensión del dispositivo. |
0xDA | Dirección inicial del controlador | Dirección de devolución de llamada de WMI dentro del controlador | Reservado | Se intentó descargar un controlador que no ha registrado su función de devolución de llamada WMI. |
0xDB | Dirección del objeto de dispositivo | Reservado | Reservado | Se intentó eliminar un objeto de dispositivo que no se anule el registro de WMI. |
0xDC | Reservado | Reservado | Reservado | Se especificó un valor RegHandle no válido como parámetro de la función EtwUnregister. |
0xDD | Dirección de la llamada a EtwRegister | Dirección inicial del controlador de descarga | Para Windows 8 y versiones posteriores, este parámetro es el valor RegHandle de ETW. | Se intentó descargar un controlador sin llamar a EtwUnregister. |
0xDF | Dirección del objeto de sincronización | 0 | 0 | El objeto de sincronización está en el espacio de direcciones de sesión. Los objetos de sincronización no se permiten en el espacio de direcciones de sesión porque se pueden manipular desde otra sesión o desde subprocesos del sistema que no tienen espacio de direcciones virtuales de sesión. |
0xE0 | Dirección en modo de usuario que se usa como parámetro | Tamaño , en bytes, del intervalo de direcciones que se usa como parámetro | Reservado | Se realizó una llamada a una función kernel del sistema operativo que especificó una dirección en modo de usuario como parámetro. |
0xE1 | Dirección del objeto de sincronización | Reservado | Reservado | Se encontró un objeto de sincronización para tener una dirección que no era válida o paginable. |
0xE2 | Dirección del IRP | Dirección en modo de usuario presente en el IRP | Reservado | Se encontró que un IRP con Irp-RequestorMode> establecido en KernelMode tenía una dirección en modo de usuario como uno de sus miembros. |
0xE3 | Dirección de la llamada a la API | Dirección en modo de usuario usada como parámetro en la API | Reservado | Un controlador ha realizado una llamada a una rutina ZwXxx en modo kernel con una dirección en modo de usuario como parámetro. |
0xE4 | Dirección de la llamada a la API | Dirección de la estructura de UNICODE_STRING con formato incorrecto | Reservado | Un controlador ha realizado una llamada a una rutina ZwXxx en modo kernel con una estructura de UNICODE_STRING mal formada como parámetro. |
0xE5 | IRQL actual | Reservado | Reservado | Se realizó una llamada a una API de kernel en el IRQL incorrecto. |
0xE6 | Dirección dentro del controlador que realiza la llamada a Zw API | IRQL actual | API de kernel especiales. | No se llamó a kernel Zw API en IRQL = PASSIVE_LEVEL y con LAS API de kernel especiales habilitadas. |
0xEA | IRQL actual | Recuento de deshabilitación de APC del subproceso | Dirección del bloqueo de inserción | Un controlador ha intentado adquirir un interbloqueo mientras las API están habilitadas. |
0xEB | IRQL actual | Recuento de deshabilitación de APC del subproceso | Dirección del bloqueo de inserción | Un controlador ha intentado liberar un bloqueo de inserción mientras las API están habilitadas. |
0xF0 | Dirección del búfer de destino | Dirección del búfer de origen | Número de bytes que se van a copiar | Un controlador denominado función memcpy con búferes de origen y destino superpuestos. |
0xF5 | Dirección del identificador NULL | Tipo de objeto | Reservado | Un controlador pasó un identificador NULL a ObReferenceObjectByHandle. |
0xF6 | Controlar el valor al que se hace referencia | Dirección del proceso actual | Dirección dentro del controlador que realiza la referencia incorrecta | Un controlador hace referencia a un identificador en modo de usuario como modo kernel. |
0xF7 | Identificador del valor especificado por el autor de la llamada | Tipo de objeto especificado por el autor de la llamada | AccessMode especificado por el autor de la llamada | Un controlador está intentando una referencia en modo de usuario para un identificador de kernel en el contexto del proceso del sistema. |
0xFA | Dirección de rutina de finalización. | Valor IRQL antes de llamar a la rutina de finalización | Valor IRQL actual, después de llamar a la rutina de finalización | La rutina de finalización de IRP devuelta en un IRQL que era diferente de IRQL en la que se llamó a la rutina. |
0xFB | Dirección de rutina de finalización | Recuento de deshabilitación de APC del subproceso actual | Recuento de deshabilitación de APC del subproceso antes de llamar a la rutina de finalización de IRP | La rutina de finalización de IRP del controlador cambió el recuento de deshabilitaciones de APC del subproceso. El recuento de deshabilitaciones de APC se disminuye cada vez que un controlador llama a KeEnterCriticalRegion, FsRtlEnterFileSystem o adquiere una exclusión mutua. El recuento de deshabilitaciones de APC se incrementa cada vez que un controlador llama a KeLeaveCriticalRegion, KeReleaseMutex o FsRtlExitFileSystem. Dado que estas llamadas siempre deben estar en pares, el recuento de deshabilitaciones de APC debe ser cero siempre que se salga de un subproceso. Un valor negativo indica que un controlador ha deshabilitado las llamadas de APC sin volver a habilitarlas. Un valor positivo indica que el valor inverso es true. |
0xFC | Dirección dentro del controlador que realiza la llamada API incorrecta. | Valor de ApcContext proporcionado. | Reservado | Llamar a ZwNotifyChangeKey (desde el modo kernel) con un valor de ApcContext no admitido. |
0x105 a 0x140
Parámetro 1 | Parámetro 2 | Parámetro 3 | Parámetro 4 | Causa del error |
---|---|---|---|---|
0x105 | Dirección del IRP | 0 | 0 | El controlador usa ExFreePool en lugar de IoFreeIrp para liberar el IRP. |
0x10A | 0 | 0 | 0 | El controlador intenta cargar la cuota del grupo en el proceso Inactivo. |
0x10B | 0 | 0 | 0 | El controlador intenta cargar la cuota del grupo desde una rutina DPC. Esto es incorrecto porque el contexto del proceso actual no está definido. |
0x110 | Dirección de la rutina del servicio de interrupción | Dirección del contexto extendido que se guardó antes de ejecutar el ISR | La dirección del contexto extendido se guardó después de ejecutar el ISR. | La rutina de servicio de interrupción (ISR) del controlador ha dañado el contexto de subproceso extendido. |
0x111 | Dirección de la rutina del servicio de interrupción | IRQL antes de ejecutar ISR | IRQL después de ejecutar ISR | La rutina de servicio de interrupción devolvió un IRQL cambiado. |
0x115 | Dirección del subproceso responsable del apagado, que puede estar interbloqueo. | 0 | 0 | El comprobador del controlador detectó que el sistema ha tardado más de 20 minutos y que el apagado no se ha completado. |
0x11A | IRQL actual | 0 | 0 | El controlador llama a KeEnterCriticalRegion en irQL > APC_LEVEL. |
0x11B | IRQL actual | 0 | 0 | El controlador llama a KeLeaveCriticalRegion en irQL > APC_LEVEL. |
0x120 | Dirección del valor IRQL | Dirección del objeto en el que se va a esperar | Dirección del valor de tiempo de espera | El subproceso espera en irQL > DISPATCH_LEVEL. Los autores de llamadas de KeWaitForSingleObject o KeWaitForMultipleObjects deben ejecutarse en IRQL <= DISPATCH_LEVEL. |
0x121 | Dirección del valor IRQL | Dirección del objeto en el que se va a esperar | Dirección del valor de tiempo de espera | El subproceso espera en IRQL es igual a DISPATCH_LEVEL y el tiempo de espera es NULL. Los autores de llamadas de KeWaitForSingleObject o KeWaitForMultipleObjects se pueden ejecutar en IRQL <= DISPATCH_LEVEL. Si se proporciona un puntero NULL para Timeout, el subproceso de llamada permanece en un estado de espera hasta que se señala el objeto. |
0x122 | Dirección del valor IRQL | Dirección del objeto en el que se va a esperar | Dirección del valor de tiempo de espera | El subproceso espera en DISPATCH_LEVEL y el valor de tiempo de espera no es igual a cero (0). Si timeout != 0, los llamadores de KeWaitForSingleObject o KeWaitForMultipleObjects deben ejecutarse en IRQL <= APC_LEVEL. |
0x123 | Dirección del objeto en el que se va a esperar | 0 | 0 | El autor de la llamada de KeWaitForSingleObject o KeWaitForMultipleObjects especificó la espera como UserMode, pero el objeto está en la pila del kernel. |
0x130 | Dirección del elemento de trabajo | 0 | 0 | El elemento de trabajo está en el espacio de direcciones de sesión. Los elementos de trabajo no se permiten en el espacio de direcciones de sesión porque se pueden manipular desde otra sesión o desde subprocesos del sistema que no tienen espacio de direcciones virtuales de sesión. |
0x131 | Dirección del elemento de trabajo | 0 | 0 | El elemento de trabajo está en memoria paginable. Los elementos de trabajo deben estar en memoria no paginable porque el kernel los usa en DISPATCH_LEVEL. |
0x135 | Dirección de IRP | Número de milisegundos permitidos entre la llamada de IoCancelIrp y la finalización de este IRP | 0 | El IRP cancelado no se completó en el tiempo esperado. El controlador tardó más de lo esperado en completar el IRP cancelado. |
0x13A | Dirección del bloque del grupo que se libera | Valor incorrecto | Dirección del valor incorrecto | El controlador ha llamado ExFreePool y Driver Verifier detecta un error en uno de los valores internos que se usan para realizar un seguimiento del uso del grupo. |
0x13B | Dirección del bloque del grupo que se libera | Dirección del valor incorrecto | Dirección de un puntero a la página de memoria incorrecta | El controlador ha llamado ExFreePool y Driver Verifier detecta un error en uno de los valores internos que se usan para realizar un seguimiento del uso del grupo. |
0x13C | Dirección del bloque del grupo que se libera | Valor incorrecto | Dirección del valor incorrecto | El controlador ha llamado ExFreePool y Driver Verifier detecta un error en uno de los valores internos que se usan para realizar un seguimiento del uso del grupo. |
0x13D | Dirección del bloque del grupo que se libera | Dirección del valor incorrecto | Valor correcto que se esperaba | El controlador ha llamado ExFreePool y Driver Verifier detecta un error en uno de los valores internos que se usan para realizar un seguimiento del uso del grupo. |
0x13E | Dirección de bloque de grupo especificada por el autor de la llamada | Dirección de bloque del grupo a la que realiza el seguimiento el Comprobador de controladores | Puntero a la dirección de bloque del grupo a la que realiza el seguimiento el Comprobador de controladores | La dirección de bloque del grupo especificada por el autor de la llamada de ExFreePool es diferente de la dirección a la que realiza el comprobador de controladores. |
0x13F | Dirección del bloque del grupo que se libera | Número de bytes que se liberan | Puntero al número de bytes a los que realiza el seguimiento el Comprobador de controladores | El número de bytes de memoria que se libera en la llamada a ExFreePool es diferente del número de bytes a los que realiza el seguimiento el Comprobador de controladores. |
0x140 | IRQL actual | Dirección MDL | Dirección virtual asociada a esta MDL | Un MDL no bloqueado se construyó a partir de memoria paginable o tradable. |
0x141 | Dirección física más alta que el controlador solicitó para la asignación | Número de bytes que se van a asignar | 0 | El controlador solicita explícitamente memoria física de menos de 4 GB. |
0x1000 a 0x100B: interbloqueos
Parámetro 1 | Parámetro 2 | Parámetro 3 | Parámetro 4 | Causa del error |
---|---|---|---|---|
0x1000 | Dirección del recurso | Reservado | Reservado | Interbloqueo automático: el subproceso actual ha intentado adquirir de forma recursiva y exclusivamente un recurso que solo posee compartido. Una comprobación de errores con este parámetro solo se produce cuando la opción Detección de interbloqueos de Comprobador de controladores está activa. |
0x1001 | Dirección del recurso que era la causa final del interbloqueo | Reservado | Reservado | Interbloqueo: se ha encontrado una infracción de jerarquía de bloqueo. Una comprobación de errores con este parámetro solo se produce cuando la opción Detección de interbloqueos de Comprobador de controladores está activa. (Use la extensión !deadlock para obtener más información). |
0x1002 | Dirección del recurso | Reservado | Reservado | Recurso no inicializado: se ha adquirido un recurso sin inicializarse primero. Una comprobación de errores con este parámetro solo se produce cuando la opción Detección de interbloqueos del comprobador de controladores está activa. |
0x1003 | Dirección del recurso que se libera interbloqueo | Dirección del recurso que se debe haber liberado primero | Reservado | Versión inesperada: se ha liberado un recurso en un orden incorrecto. Una comprobación de errores con este parámetro solo se produce cuando la opción Detección de interbloqueos del comprobador de controladores está activa. |
0x1004 | Dirección del recurso | Dirección del subproceso que adquirió el recurso | Dirección del subproceso actual | Subproceso inesperado: el subproceso incorrecto libera un recurso. Una comprobación de errores con este parámetro solo se produce cuando la opción Detección de interbloqueos del comprobador de controladores está activa. |
0x1005 | Dirección del recurso | Reservado | Reservado | Inicialización múltiple: se inicializa un recurso más de una vez. Una comprobación de errores con este parámetro solo se produce cuando la opción Detección de interbloqueos del comprobador de controladores está activa. |
0x1007 | Dirección del recurso | Reservado | Reservado | Recurso no adquirido: se libera un recurso antes de que se haya adquirido. Una comprobación de errores con este parámetro solo se produce cuando la opción Detección de interbloqueos del comprobador de controladores está activa. |
0x1008 | Dirección de bloqueo | Reservado | Reservado | El controlador intentó adquirir un bloqueo mediante una API que no coincide con este tipo de bloqueo. |
0x1009 | Dirección de bloqueo | Reservado | Reservado | El controlador intentó liberar un bloqueo mediante una API que no coincide con este tipo de bloqueo. |
0x100a | Dirección del subproceso del propietario | Reservado | El subproceso terminado posee el bloqueo. | |
0x100B | Dirección de bloqueo | Dirección del subproceso del propietario | Reservado | El bloqueo eliminado sigue siendo propiedad de un subproceso. |
0x1010 | Objeto de dispositivo al que se emitió el IRP de escritura. | Dirección del IRP. | System-Space dirección virtual del búfer que describe mdl. | Se modificó el contenido del búfer MDL invariable para Write Irp. |
0x1011 | Objeto de dispositivo al que se emitió el IRP de escritura. | Dirección del IRP. | System-Space dirección virtual del búfer que describe mdl. | El contenido del búfer MDL invariable para Read Irp se modificó durante el envío o el búfer respaldado por páginas ficticias. |
0x1012 | Puntero a la cadena que describe la infracción. | Datos implicados en este daño (0 si no se usan). | Datos implicados en este daño (0 si no se usan). | El almacenamiento de estado de la extensión comprobador detectó daños. |
0x1013 | Puntero al objeto de controlador. | Puntero a las devoluciones de llamada de E/S originales capturadas. | Reservado (sin usar). | El comprobador detectó daños internos en las devoluciones de llamada de E/S originales capturadas. |
0x2000 a 0x2005: problemas de integridad de código
Parámetro 1 | Parámetro 2 | Parámetro 3 | Parámetro 4 | Causa del error |
---|---|---|---|---|
0x2000 | Dirección del código del controlador donde se detectó el error. | Tipo de grupo. | Etiqueta de grupo (si se proporciona). | Problema de integridad de código: el autor de la llamada especificó un tipo de grupo ejecutable. (Se esperaba: NonPagedPoolNx) |
0x2001 | Dirección del código del controlador donde se detectó el error. | Protección de páginas (WIN32_PROTECTION_MASK). | 0 | Problema de integridad de código: el autor de la llamada especificó una protección de página ejecutable. (Se esperaba: bits PAGE_EXECUTE* borrados) |
0x2002 | Dirección del código del controlador donde se detectó el error. | Prioridad de página (MM_PAGE_PRIORITY or'd lógicamente con MdlMapping*). | 0 | Problema de integridad de código: el llamador especificó una asignación MDL ejecutable. (Se esperaba: MdlMappingNoExecute) |
0x2003 | Nombre del archivo de imagen (cadena Unicode). | Dirección del encabezado de sección. | Nombre de sección (cadena codificada UTF-8). | Problema de integridad de código: la imagen contiene una sección ejecutable y grabable. |
0x2004 | Nombre del archivo de imagen (cadena Unicode). | Dirección del encabezado de sección. | Nombre de sección (cadena codificada UTF-8). | Problema de integridad de código: la imagen contiene una sección que no está alineada con la página. |
0x2005 | Nombre del archivo de imagen (cadena Unicode). | Directorio IAT. | Nombre de sección (cadena codificada UTF-8). | Problema de integridad de código: la imagen contiene un IAT ubicado en una sección ejecutable. |
0xA001 a 0xA00D: problemas de conmutador de máquina virtual
Parámetro 1 | Parámetro 2 | Parámetro 3 | Parámetro 4 | Causa del error |
---|---|---|---|---|
0xA001 | Puntero al objeto NetBufferList | Puntero al objeto de conmutador virtual (si no es NULL) | Reservado (sin usar) | Conmutador de máquina virtual: se debe establecer sourceHandle para netBufferList proporcionado por el autor de la llamada. Consulte la rutina AllocateNetBufferListForwardingContext . |
0xA002 | Puntero al objeto NetBufferList | Puntero al objeto de conmutador virtual (si no es NULL). | Reservado (sin usar) | Conmutador de máquina virtual: el autor de la llamada proporcionó el detalle de reenvío de NetBufferList no es cero. Consulte la rutina AllocateNetBufferListForwardingContext . |
0xA003 | Puntero al objeto NetBufferList | Puntero al objeto de conmutador virtual (si no es NULL). | Reservado (sin usar) | Conmutador de máquina virtual: el autor de la llamada proporcionó un netBufferList con el encabezado de paquete o el contexto de enrutamiento que es NULL. Consulte Directrices de administración de paquetes para la ruta de acceso de datos de conmutador extensible. |
0xA004 | Identificador del puerto no válido | Índice NIC | Puntero al objeto de conmutador virtual (si no es NULL). | Conmutador de máquina virtual: el autor de la llamada especificó una combinación de índice de puerto y NIC no válida. Consulte Puerto de conmutador extensible de Hyper-V y Estados del adaptador de red. |
0xA005 | Puntero al objeto NetBufferList | Puntero a la lista Destino. | Puntero al objeto de conmutador virtual (si no es NULL). | Conmutador de máquina virtual: el autor de la llamada proporcionó un destino no válido. Consulte AddNetBufferListDestination y UpdateNetBufferListDestinations. |
0xA006 | Puntero al objeto NetBufferList | Puntero al objeto de conmutador virtual (si no es NULL). | Reservado (sin usar) | Conmutador de máquina virtual: el autor de la llamada proporcionó un NIC de origen o un objeto Port no válidos. Consulte Puerto de conmutador extensible de Hyper-V y Estados del adaptador de red. |
0xA007 | Puntero al objeto NetBufferList | Puntero al objeto de conmutador virtual (si no es NULL). | Reservado (sin usar) | Conmutador de máquina virtual: el autor de la llamada proporcionó una lista de destino no válida. Consulte AddNetBufferListDestination y UpdateNetBufferListDestinations. |
0xA008 | Objeto NIC primario | Índice de NIC | Puntero al objeto de conmutador virtual (si no es NULL). | Conmutador de máquina virtual: intenta hacer referencia a una NIC cuando no se permite. Consulte Puerto de conmutador extensible de Hyper-V y Estados del adaptador de red. |
0xA009 | Puerto al que se hace referencia | Puntero al objeto de conmutador virtual (si no es NULL) | Reservado (sin usar) | Conmutador de máquina virtual: intente hacer referencia a un puerto cuando no se permita. Consulte Puerto de conmutador extensible de Hyper-V y Estados del adaptador de red. |
0xA00A | Puntero al objeto NetBufferList | ContextTypeInfo (objeto) | Reservado (sin usar) | Conmutador de máquina virtual: el contexto de error ya está establecido. Consulte SetNetBufferListSwitchContext. |
0xA00B | Puntero al objeto NetBufferList | NDIS_SWITCH_REPORT_FILTERED_NBL_FLAGS_* | Puntero al objeto de conmutador virtual (si no es NULL) | Conmutador de máquina virtual: dirección no válida proporcionada para NetBufferList descartada. Consulte ReportFilteredNetBufferLists. |
0xA00C | Puntero al objeto NetBufferList | Valor de Send Flags | Puntero al objeto de conmutador virtual (si no es NULL) | Conmutador de máquina virtual: la cadena NetBufferList tiene varios puertos de origen cuando se establece NDIS_SEND_FLAGS_SWITCH_SINGLE_SOURCE marca. Consulte Marcas de envío y recepción de conmutador extensible de Hyper-V. |
0xA00D | Puntero al objeto NetBufferList | Puntero al contexto del conmutador virtual | Puntero al objeto de conmutador virtual (si no es NULL) | Conmutador de máquina virtual: uno o varios NetBufferLists en la cadena tienen un destino no válido cuando se establece NDIS_RECEIVE_FLAGS_SWITCH_DESTINATION_GROUP marca. Consulte Marcas de envío y recepción de conmutador extensible de Hyper-V. |
0xA00E | Puntero al objeto NetBufferLists. | Puntero al contexto del conmutador virtual. | Puntero al objeto de conmutador virtual (si no es NULL). | Conmutador de máquina virtual: intenta completar NetBufferList a través de WNV cuando se establece VMS_NBL_ROUTING_CONTEXT_FLAG_NO_WNV_PROCESSING marca. |
0x00020002 a 0x00020022: infracciones de la regla de cumplimiento de DDI
Parámetro 1 | Parámetro 2 | Parámetro 3 | Parámetro 4 | Causa del error |
---|---|---|---|---|
0x00020002 | Puntero a la cadena que describe la condición de regla infringida. | Puntero opcional a las variables de estado de regla. | Reservado | El controlador infringió la regla de cumplimiento de DDI IrqlApcLte. La regla especifica que el controlador debe llamar a ObGetObjectSecurity y ObReleaseObjectSecurity solo cuando IRQL <= APC_LEVEL. |
0x00020003 | Puntero a la cadena que describe la condición de regla infringida. | Puntero opcional a las variables de estado de regla. | Reservado | El controlador infringía la regla de cumplimiento de DDI IrqlDispatch. La regla IrqlDispatch especifica que el controlador debe llamar a ciertas rutinas solo cuando IRQL = DISPATCH_LEVEL |
0x00020004 | Puntero a la cadena que describe la condición de regla infringida. | Puntero opcional a las variables de estado de regla. | Reservado | El controlador infringía la regla de cumplimiento de DDI IrqlExAllocatePool. La regla IrqlExAllocatePool especifica que el controlador llama a ExAllocatePoolWithTag y ExAllocatePoolWithTagPriority solo cuando se encuentra en IRQL<=DISPATCH_LEVEL. |
0x00020005 | Puntero a la cadena que describe la condición de regla infringida. | Puntero opcional a las variables de estado de regla. | Reservado | El controlador infringió la regla de cumplimiento de DDI IrqlExApcLte1. La regla IrqlExApcLte1 especifica que el controlador llama a ExAcquireFastMutex y ExTryToAcquireFastMutex solo en IRQL <= APC_LEVEL. |
0x00020006 | Puntero a la cadena que describe la condición de regla infringida. | Puntero opcional a las variables de estado de regla. | Reservado | El controlador infringió la regla de cumplimiento de DDI IrqlExApcLte2. La regla IrqlExApcLte2 especifica que el controlador llama a ciertas rutinas solo cuando IRQL <= APC_LEVEL. |
0x00020007 | Puntero a la cadena que describe la condición de regla infringida. | Puntero opcional a las variables de estado de regla. | Reservado | El controlador infringió la regla de cumplimiento de DDI IrqlExApcLte3. La regla IrqlExApcLte3 especifica que el controlador debe llamar a determinadas rutinas de soporte técnico ejecutivo solo cuando IRQL <= APC_LEVEL. |
0x00020008 | Puntero a la cadena que describe la condición de regla infringida. | Puntero opcional a las variables de estado de regla. | Reservado | El controlador infringía la regla de cumplimiento de DDI IrqlExPassive. La regla IrqlExPassive especifica que el controlador debe llamar a ciertas rutinas de soporte técnico ejecutivo solo cuando IRQL = PASSIVE_LEVEL. |
0x00020009 | Puntero a la cadena que describe la condición de regla infringida. | Puntero opcional a las variables de estado de regla. | Reservado | El controlador infringió la regla de cumplimiento de DDI IrqlIoApcLte. La regla IrqlIoApcLte especifica que el controlador debe llamar a ciertas rutinas del administrador de E/S solo cuando IRQL <= APC_LEVEL. |
0x0002000A | Puntero a la cadena que describe la condición de regla infringida. | Puntero opcional a las variables de estado de regla. | Reservado | El controlador infringió la regla de cumplimiento de DDI IrqlIoPassive1. La regla IrqlIoPassive1 especifica que el controlador debe llamar a ciertas rutinas del administrador de E/S solo cuando IRQL = PASSIVE_LEVEL. |
0x0002000B | Puntero a la cadena que describe la condición de regla infringida. | Puntero opcional a las variables de estado de regla. | Reservado | El controlador infringió la regla de cumplimiento de DDI IrqlIoPassive2. La regla IrqlIoPassive2 especifica que el controlador debe llamar a ciertas rutinas del administrador de E/S solo cuando IRQL = PASSIVE_LEVEL. |
0x0002000C | Puntero a la cadena que describe la condición de regla infringida. | Puntero opcional a las variables de estado de regla. | Reservado | El controlador infringió la regla de cumplimiento de DDI IrqlIoPassive3. La regla IrqlIoPassive3 especifica que el controlador debe llamar a ciertas rutinas del administrador de E/S solo cuando IRQL = PASSIVE_LEVEL. |
0x0002000D | Puntero a la cadena que describe la condición de regla infringida. | Puntero opcional a las variables de estado de regla. | Reservado | El controlador infringió la regla de cumplimiento de DDI IrqlIoPassive4. La regla IrqlIoPassive4 especifica que el controlador debe llamar a ciertas rutinas del administrador de E/S solo cuando IRQL = PASSIVE_LEVEL. |
0x0002000E | Puntero a la cadena que describe la condición de regla infringida. | Puntero opcional a las variables de estado de regla. | Reservado | El controlador infringió la regla de cumplimiento de DDI IrqlIoPassive5. La regla IrqlIoPassive5 especifica que el controlador debe llamar a determinadas rutinas del administrador de E/S solo cuando IRQL = PASSIVE_LEVEL. |
0x0002000F | Puntero a la cadena que describe la condición de regla infringida. | Puntero opcional a las variables de estado de regla. | Reservado | El controlador infringió la regla de cumplimiento de DDI IrqlKeApcLte1. La regla IrqlKeApcLte1 especifica que el controlador debe llamar a determinadas rutinas de kernel solo cuando IRQL <= APC_LEVEL. |
0x00020010 | Puntero a la cadena que describe la condición de regla infringida. | Puntero opcional a las variables de estado de regla. | Reservado | El controlador infringió la regla de cumplimiento de DDI IrqlKeApcLte2. La regla IrqlKeApcLte2 especifica que el controlador debe llamar a ciertas rutinas de kernel solo cuando IRQL <= APC_LEVEL. |
0x00020011 | Puntero a la cadena que describe la condición de regla infringida. | Puntero opcional a las variables de estado de regla. | Reservado | El controlador infringió la regla de cumplimiento de DDI IrqlKeDispatchLte. La regla IrqlKeDispatchLte especifica que el controlador debe llamar a determinadas rutinas de kernel solo cuando IRQL <= DISPATCH_LEVEL. |
0x00020015 | Puntero a la cadena que describe la condición de regla infringida. | Puntero opcional a las variables de estado de regla. | Reservado | El controlador infringía la regla de cumplimiento de DDI IrqlKeReleaseSpinLock. La regla IrqlKeReleaseSpinLock especifica que el controlador debe llamar a KeReleaseSpinLock solo cuando IRQL = DISPATCH_LEVEL. |
0x00020016 | Puntero a la cadena que describe la condición de regla infringida. | Puntero opcional a las variables de estado de regla. | Reservado | El controlador infringía la regla de cumplimiento de DDI IrqlKeSetEvent. La regla IrqlKeSetEvent especifica que solo se llama a la rutina KeSetEvent en IRQL <= DISPATCH_LEVEL cuando Wait se establece en FALSE y en IRQL <= APC_LEVEL cuando Wait está establecido en TRUE. |
0x00020019 | Puntero a la cadena que describe la condición de regla infringida. | Puntero opcional a las variables de estado de regla. | Reservado | El controlador infringió la regla de cumplimiento de DDI IrqlMmApcLte. La regla IrqlMmApcLte especifica que el controlador debe llamar a ciertas rutinas del administrador de memoria solo cuando IRQL <= APC_LEVEL. |
0x0002001A | Puntero a la cadena que describe la condición de regla infringida. | Puntero opcional a las variables de estado de regla. | Reservado | El controlador infringía la regla de cumplimiento de DDI IrqlMmDispatch. La regla IrqlMmDispatch especifica que el controlador debe llamar a MmFreeContiguousMemory solo cuando IRQL = DISPATCH_LEVEL. |
0x0002001B | Puntero a la cadena que describe la condición de regla infringida. | Puntero opcional a las variables de estado de regla. | Reservado | El controlador infringía la regla de cumplimiento de DDI IrqlObPassive. La regla IrqlObPassive especifica que el controlador debe llamar a ObReferenceObjectByHandle solo cuando IRQL = PASSIVE_LEVEL. |
0x0002001C | Puntero a la cadena que describe la condición de regla infringida. | Puntero opcional a las variables de estado de regla. | Reservado | El controlador infringía la regla de cumplimiento de DDI IrqlPsPassive. La regla IrqlPsPassive especifica que el controlador debe llamar a ciertas rutinas del administrador de procesos y subprocesos solo cuando IRQL = PASSIVE_LEVEL. |
0x0002001D | Puntero a la cadena que describe la condición de regla infringida. | Dirección del estado de regla interno (segundo argumento a !ruleinfo). | Dirección de estados complementarios (tercer argumento a !ruleinfo). | El controlador infringía la regla de cumplimiento de DDI IrqlReturn. |
0x0002001E | Puntero a la cadena que describe la condición de regla infringida. | Puntero opcional a las variables de estado de regla. | Reservado | El controlador infringía la regla de cumplimiento de DDI IrqlRtlPassive. La regla IrqlRtlPassive especifica que el controlador debe llamar a RtlDeleteRegistryValue solo cuando IRQL = PASSIVE_LEVEL. |
0x0002001F | Puntero a la cadena que describe la condición de regla infringida. | Puntero opcional a las variables de estado de regla. | Reservado | El controlador infringía la regla de cumplimiento de DDI IrqlZwPassive. La regla IrqlZwPassive especifica que el controlador debe llamar a ZwClose solo cuando IRQL = PASSIVE_LEVEL. |
0x00020022 | Puntero a la cadena que describe la condición de regla infringida. | Reservado (sin usar) | Reservado (sin usar) | El controlador infringió la regla de cumplimiento de DDI IrqlIoDispatch. |
0x00020023 | Puntero a la cadena que describe la condición de regla infringida. | Reservado (sin usar). | Reservado (sin usar). | El controlador infringió la regla de cumplimiento de DDI IrqlIoRtlZwPassive. La regla IrqlIoRtlZwPassive especifica que el controlador llama a los DDIs enumerados en la regla solo cuando se ejecuta en IRQL = PASSIVE_LEVEL. |
0x00020024 | Puntero a la cadena que describe la condición de regla infringida. | Reservado (sin usar). | Reservado (sin usar). | El controlador infringía la regla de cumplimiento de DDI IrqlNtifsApcPassive. La regla IrqlNtifsApcPassive especifica que el controlador llama a los DDIs enumerados en la regla solo cuando se ejecuta en IRQL = PASSIVE_LEVEL o en IRQL <= APC_LEVEL. |
0x00020025 | Puntero a la cadena que describe la condición de regla infringida. | Reservado (sin usar). | Reservado (sin usar). | El controlador infringía la regla de cumplimiento de DDI interna de Microsoft IrqlKeMore. |
0x00040003 a 0x00043006: infracciones de reglas de cumplimiento de DDI
Parámetro 1 | Parámetro 2 | Parámetro 3 | Parámetro 4 | Causa del error |
---|---|---|---|---|
0x00040003 | Puntero a la cadena que describe la condición de regla infringida. | Dirección del estado de regla interno (segundo argumento a !ruleinfo). | Dirección de estados complementarios (tercer argumento a !ruleinfo). | El controlador infringía la regla de cumplimiento de DDI CriticalRegions. |
0x00040006 | Puntero a la cadena que describe la condición de regla infringida. | Dirección del estado de regla interno (segundo argumento a !ruleinfo). | Dirección de estados complementarios (tercer argumento a !ruleinfo). | El controlador infringía la regla de cumplimiento de DDI QueuedSpinLock. |
0x00040007 | Puntero a la cadena que describe la condición de regla infringida. | Dirección del estado de regla interno (segundo argumento a !ruleinfo). | Dirección de estados complementarios (tercer argumento a !ruleinfo). | El controlador infringía la regla de cumplimiento de DDI QueuedSpinLockRelease. |
0x00040009 | Puntero a la cadena que describe la condición de regla infringida. | Dirección del estado de regla interno (segundo argumento a !ruleinfo). | Dirección de estados complementarios (tercer argumento a !ruleinfo). | El controlador infringía la regla de cumplimiento de DDI SpinLock. |
0x0004000A | Puntero a la cadena que describe la condición de regla infringida. | Dirección del estado de regla interno (segundo argumento a !ruleinfo) | Dirección de estados complementarios (tercer argumento a !ruleinfo). | El controlador infringía la regla de cumplimiento de DDI SpinlockRelease. |
0x0004000E | Puntero a la cadena que describe la condición de regla infringida. | Dirección del estado de regla interno (segundo argumento a !ruleinfo). | Dirección de estados complementarios (tercer argumento a !ruleinfo). | El controlador infringió la regla de cumplimiento de DDI GuardedRegions. |
0x0004100B | Puntero a la cadena que describe la condición de regla infringida. | Reservado (sin usar) | Reservado (sin usar) | El controlador infringía la regla de cumplimiento de DDI RequestedPowerIrp. |
0x0004100F | Puntero a la cadena que describe la condición de regla infringida. | Dirección del estado de regla interno (segundo argumento a !ruleinfo). | Dirección de estados complementarios (tercer argumento a !ruleinfo). | El controlador infringió la regla de cumplimiento de DDI IoSetCompletionExCompleteIrp. |
0x00043006 | Puntero a la cadena que describe la condición de regla infringida. | Reservado (sin usar) | Reservado (sin usar) | El controlador infringía la regla de cumplimiento de DDI PnpRemove. |
0x00081001 a 0x00082005: infracciones de reglas de cumplimiento del controlador avStream
Parámetro 1 | Parámetro 2 | Parámetro 3 | Parámetro 4 | Causa del error |
---|---|---|---|---|
0x00081001 | Puntero a la cadena que describe la condición de regla infringida. | Dirección del estado de regla interno (segundo argumento a !ruleinfo). | Dirección de estados complementarios (tercer argumento a !ruleinfo). | El controlador infringía la regla de cumplimiento de DDI KsDeviceMutex. |
0x00081002 | Puntero a la cadena que describe la condición de regla infringida. | Dirección del estado de regla interno (segundo argumento a !ruleinfo). | Dirección de estados complementarios (tercer argumento a !ruleinfo). | El controlador infringía la regla de cumplimiento de DDI KsStreamPointerClone. |
0x00081003 | Puntero a la cadena que describe la condición de regla infringida. | Reservado (sin usar) | Reservado (sin usar) | El controlador infringía la regla de cumplimiento de DDI KsStreamPointerLock. |
0x00081004 | Puntero a la cadena que describe la condición de regla infringida. | Dirección del estado de regla interno (segundo argumento a !ruleinfo). | Dirección de estados complementarios (tercer argumento a !ruleinfo). | El controlador infringía la regla de cumplimiento de DDI KsStreamPointerUnlock. |
0x00081005 | Puntero a la cadena que describe la condición de regla infringida. | Reservado (sin usar) | Reservado (sin usar) | El controlador infringía la regla de cumplimiento de DDI KsCallbackReturn. |
0x00081006 | Puntero a la cadena que describe la condición de regla infringida. | Dirección del estado de regla interno (segundo argumento a !ruleinfo). | Dirección de estados complementarios (tercer argumento a !ruleinfo). | El controlador infringía la regla de cumplimiento de DDI KsIrqlDeviceCallbacks. |
0x00081007 | Puntero a la cadena que describe la condición de regla infringida. | Dirección del estado de regla interno (segundo argumento a !ruleinfo). | Dirección de estados complementarios (tercer argumento a !ruleinfo). | El controlador infringía la regla de cumplimiento de DDI KsIrqlFilterCallbacks. |
0x00081008 | Puntero a la cadena que describe la condición de regla infringida. | Dirección del estado de regla interno (segundo argumento a !ruleinfo). | Dirección de estados complementarios (tercer argumento a !ruleinfo). | El controlador infringía la regla de cumplimiento de DDI KsIrqlPinCallbacks. |
0x00081009 | Puntero a la cadena que describe la condición de regla infringida. | Reservado (sin usar) | Reservado (sin usar) | El controlador infringía la regla de cumplimiento de DDI KsIrqlDDIs. |
0x0008100A | Puntero a la cadena que describe la condición de regla infringida. | Dirección del estado de regla interno (segundo argumento a !ruleinfo). | Dirección de estados complementarios (tercer argumento a !ruleinfo). | El controlador infringía la regla de cumplimiento de DDI KsFilterMutex. |
0x0008100B | Puntero a la cadena que describe la condición de regla infringida. | Dirección del estado de regla interno (segundo argumento a !ruleinfo). | Dirección de estados complementarios (tercer argumento a !ruleinfo). | El controlador infringía la regla de cumplimiento de DDI KsProcessingMutex. |
0x0008100C | Puntero a la cadena que describe la condición de regla infringida. | Dirección del estado de regla interno (segundo argumento a !ruleinfo). | Dirección de estados complementarios (tercer argumento a !ruleinfo). | El controlador infringía la regla de cumplimiento de DDI KsInvalidStreamPointer. |
0x00082001 | Puntero a la cadena que describe la condición de regla infringida. | Dirección del estado de regla interno (segundo argumento a !ruleinfo). | Dirección de estados complementarios (tercer argumento a !ruleinfo). | El controlador infringía la regla de cumplimiento de DDI KsTimedPinSetDeviceState. |
0x00082002 | Puntero a la cadena que describe la condición de regla infringida. | Dirección del estado de regla interno (segundo argumento a !ruleinfo). | Dirección de estados complementarios (tercer argumento a !ruleinfo). | El controlador infringía la regla de cumplimiento de DDI KsTimedDeviceCallbacks. |
0x00082003 | Puntero a la cadena que describe la condición de regla infringida. | Dirección del estado de regla interno (segundo argumento a !ruleinfo). | Dirección de estados complementarios (tercer argumento a !ruleinfo). | El controlador infringía la regla de cumplimiento de DDI KsTimedFilterCallbacks. |
0x00082004 | Puntero a la cadena que describe la condición de regla infringida. | Dirección del estado de regla interno (segundo argumento a !ruleinfo). | Dirección de estados complementarios (tercer argumento a !ruleinfo). | El controlador infringía la regla de cumplimiento de DDI KsTimedPinCallbacks. |
0x00082005 | Puntero a la cadena que describe la condición de regla infringida. | Dirección del estado de regla interno (segundo argumento a !ruleinfo). | Dirección de estados complementarios (tercer argumento a !ruleinfo). | El controlador infringía la regla de cumplimiento de DDI KsTimedProcessingMutex. |
0x00091001 a 0x0009400C: infracciones de la regla de cumplimiento de DDI de NDIS
Parámetro 1 | Parámetro 2 | Parámetro 3 | Parámetro 4 | Causa del error |
---|---|---|---|---|
0x00091001 | Puntero a la cadena que describe la condición de regla infringida. | Dirección del estado de regla interno (segundo argumento a !ruleinfo). | Dirección de estados complementarios (tercer argumento a !ruleinfo). | El controlador infringió la regla de cumplimiento de DDI NdisOidComplete. |
0x00091002 | Puntero a la cadena que describe la condición de regla infringida. | Dirección del estado de regla interno (segundo argumento a !ruleinfo). | Dirección de estados complementarios (tercer argumento a !ruleinfo). | El controlador infringió la regla de cumplimiento de DDI NdisOidDoubleComplete. |
0x0009100E | Puntero a la cadena que describe la condición de regla infringida. | Dirección del estado de regla interno (segundo argumento a !ruleinfo). | Dirección de estados complementarios (tercer argumento a !ruleinfo). | El controlador infringía la regla de cumplimiento de DDI NdisOidDoubleRequest. |
0x00092003 | Puntero a la cadena que describe la condición de regla infringida. | Dirección del estado de regla interno (segundo argumento a !ruleinfo). | Dirección de estados complementarios (tercer argumento a !ruleinfo). | El controlador infringió la regla de verificación NDIS/WIFI NdisTimedOidComplete. |
0x0009200D | Puntero a la cadena que describe la condición de regla infringida. | Dirección del estado de regla interno (segundo argumento a !ruleinfo). | Dirección de estados complementarios (tercer argumento a !ruleinfo). | El controlador infringía la regla de verificación NDIS/WIFI NdisTimedDataSend. |
0x0009200F | Puntero a la cadena que describe la condición de regla infringida. | Dirección del estado de regla interno (segundo argumento a !ruleinfo). | Dirección de estados complementarios (tercer argumento a !ruleinfo). | El controlador infringía la regla de verificación NDIS/WIFI NdisTimedDataHang. |
0x00092010 | Puntero a la cadena que describe la condición de regla infringida. | Dirección del estado de regla interno (segundo argumento a !ruleinfo). | Dirección de estados complementarios (tercer argumento a !ruleinfo). | El controlador infringió la regla de verificación NDIS/WIFI NdisFilterTimedPauseComplete. |
0x00092011 | Puntero a la cadena que describe la condición de regla infringida. | Dirección del estado de regla interno (segundo argumento a !ruleinfo). | Dirección de estados complementarios (tercer argumento a !ruleinfo). | El controlador infringía la regla de verificación NDIS/WIFI NdisFilterTimedDataSend. |
0x00092012 | Puntero a la cadena que describe la condición de regla infringida. | Dirección del estado de regla interno (segundo argumento a !ruleinfo). | Dirección de estados complementarios (tercer argumento a !ruleinfo). | El controlador infringía la regla de verificación NDIS/WIFI NdisFilterTimedDataReceive. |
0x00093004 | Puntero a la cadena que describe la condición de regla infringida. | Dirección del estado de regla interno (segundo argumento a !ruleinfo). | Dirección de estados complementarios (tercer argumento a !ruleinfo). | El conductor infringía la regla de verificación NDIS/WIFI WlanAssociation. |
0x00093005 | Puntero a la cadena que describe la condición de regla infringida. | Dirección del estado de regla interno (segundo argumento a !ruleinfo). | Dirección de estados complementarios (tercer argumento a !ruleinfo). | El controlador infringía la regla de verificación NDIS/WIFI WlanConnectionRoaming. |
0x00093006 | Puntero a la cadena que describe la condición de regla infringida. | Dirección del estado de regla interno (segundo argumento a !ruleinfo). | Dirección de estados complementarios (tercer argumento a !ruleinfo). | El conductor infringía la regla de verificación NDIS/WIFI WlanDisassociation. |
0x00093101 | Puntero a la cadena que describe la condición de regla infringida. | Reservado (sin usar) | Reservado (sin usar) | El conductor infringía la regla de verificación NDIS/WIFI WlanAssert. |
0x00094007 | Puntero a la cadena que describe la condición de regla infringida. | Dirección del estado de regla interno (segundo argumento a !ruleinfo). | Dirección de estados complementarios (tercer argumento a !ruleinfo). | El controlador infringía la regla de verificación NDIS/WIFI WlanTimedAssociation. |
0x00094008 | Puntero a la cadena que describe la condición de regla infringida. | Dirección del estado de regla interno (segundo argumento a !ruleinfo). | Dirección de estados complementarios (tercer argumento a !ruleinfo). | El controlador infringía la regla de verificación NDIS/WIFI WlanTimedConnectionRoaming. |
0x00094009 | Puntero a la cadena que describe la condición de regla infringida. | Dirección del estado de regla interno (segundo argumento a !ruleinfo). | Dirección de estados complementarios (tercer argumento a !ruleinfo). | El controlador infringía la regla de verificación NDIS/WIFI WlanTimedConnectRequest. |
0x0009400B | Puntero a la cadena que describe la condición de regla infringida. | Dirección del estado de regla interno (segundo argumento a !ruleinfo). | Dirección de estados complementarios (tercer argumento a !ruleinfo). | El controlador infringía la regla de verificación NDIS/WIFI WlanTimedLinkQuality. |
0x0009400C | Puntero a la cadena que describe la condición de regla infringida. | Dirección del estado de regla interno (segundo argumento a !ruleinfo). | Dirección de estados complementarios (tercer argumento a !ruleinfo). | El conductor infringía la regla de verificación NDIS/WIFI WlanTimedScan. |
Causa
Consulte la descripción de cada código en la sección Parámetros para obtener una descripción de la causa. Para obtener más información, use la extensión !analyze -v .
Resolución
Esta comprobación de errores solo puede producirse cuando se ha indicado al Comprobador de controladores que supervise uno o varios controladores. Si no tenía intención de usar el Comprobador de controladores, debe desactivarlo. También puede considerar la posibilidad de quitar el controlador que causó este problema.
Si es el escritor de controladores, use la información obtenida a través de esta comprobación de errores para corregir los errores en el código.
Para obtener información completa sobre el Comprobador de controladores, consulte Comprobador de controladores.
Comentarios
Los códigos de _POOL_TYPE se enumeran en Ntddk.h. En concreto, 0 (cero) indica un grupo no paginado y 1 (uno) indica el grupo paginado.
(Windows 8 y versiones posteriores de Windows) Si la comprobación de cumplimiento de DDI provoca una comprobación de errores, ejecute el Comprobador de controladores estáticos en el código fuente del controlador y especifique la regla de cumplimiento de DDI (identificada por el valor del parámetro 1) que provocó la comprobación de errores. El comprobador de controladores estáticos puede ayudarle a localizar la causa del problema en el código fuente.
Vea también
Controlar una comprobación de errores cuando el comprobador de controladores está habilitado