Cuando la Integridad de memoria, también conocida como Integridad de código protegida por hipervisor o HVCI, está habilitada en Windows 11, bloquea los controladores que no cumplen con los requisitos de firma del Programa de compatibilidad de hardware de Windows o WHCP. Esto puede provocar que dispositivos como impresoras, tarjetas gráficas o controladores de almacenamiento dejen de funcionar. El controlador bloqueado se registra en el registro de eventos del sistema con un valor hash específico que lo identifica. Este artículo explica cómo leer ese hash desde el Visor de eventos, cómo hacerlo coincidir con el archivo del controlador y cómo decidir si actualizar el controlador o deshabilitar HVCI.
Puntos clave: Diagnosticar bloqueos de controladores HVCI leyendo valores hash WHCP
- Visor de eventos > Registros de Windows > Sistema > Filtrar registro actual > Id. de evento 3043: Muestra el valor hash WHCP de cada controlador bloqueado.
- PowerShell Get-WinEvent -FilterHashtable: Recupera todos los eventos de bloqueo relacionados con HVCI en un solo comando para un diagnóstico más rápido.
- Hash WHCP en los detalles del evento: Identifica el archivo de controlador exacto que no superó la comprobación de firma de HVCI.
Por qué HVCI bloquea controladores con firmas WHCP faltantes
HVCI utiliza la seguridad basada en virtualización para ejecutar comprobaciones de integridad de código en modo kernel dentro de un entorno aislado seguro. Requiere que todos los controladores cargados en el kernel de Windows estén firmados con un certificado WHCP. Los controladores firmados con un certificado cruzado más antiguo o un certificado no confiable se bloquean. Cuando se bloquea un controlador, Windows escribe el Id. de evento 3043 en el registro Sistema. El evento contiene un campo llamado WHCP Hash que es un hash SHA-256 del archivo del controlador. Este hash permite identificar el archivo de controlador exacto incluso si el nombre del archivo no se muestra en el evento.
Qué es un valor hash WHCP
El hash WHCP es una cadena hexadecimal de 64 caracteres generada a partir del contenido binario del archivo del controlador. Es único para esa versión específica del controlador. Microsoft utiliza este hash en el evento de bloqueo de HVCI para que los administradores puedan localizar el controlador en el disco o en un almacén de controladores sin depender del nombre del archivo, que puede ser engañoso o duplicado.
Dónde aparece el hash WHCP en el Id. de evento 3043
El Id. de evento 3043 contiene un bloque de datos XML o de texto. En la pestaña Detalles del evento, busque el campo llamado WHCPHash o whcpHash. El valor es una cadena de 64 caracteres hexadecimales en minúscula. Si el evento utiliza el formato heredado, el hash puede aparecer después del texto “WHCP Hash:” en la pestaña General. En ambos casos, copie la cadena hash completa.
Pasos para encontrar el controlador bloqueado usando el hash WHCP
Método 1: Usar el Visor de eventos para encontrar el hash WHCP
- Abrir el Visor de eventos
Presione Win + R, escribaeventvwr.mscy presione Entrar. - Navegar al registro Sistema
En el panel izquierdo, expanda Registros de Windows y seleccione Sistema. - Filtrar por Id. de evento 3043
Haga clic en Filtrar registro actual en el panel Acciones. En el cuadro Id. de eventos escriba3043y haga clic en Aceptar. - Abrir el evento del controlador bloqueado
Haga doble clic en cualquier evento de la lista filtrada. Busque la pestaña General o la pestaña Detalles. En la pestaña Detalles, seleccione Vista descriptiva y busque el campoWHCPHash. Copie el hash de 64 caracteres.
Método 2: Usar PowerShell para obtener el hash WHCP más rápido
- Abrir PowerShell como administrador
Haga clic con el botón derecho en el botón Inicio y seleccione Windows Terminal (Admin) o PowerShell (Admin). - Ejecutar el comando Get-WinEvent
Escriba el siguiente comando y presione Entrar:Get-WinEvent -FilterHashtable @{LogName='System'; Id=3043} | Format-List TimeCreated, Message - Localizar el hash WHCP en la salida
Desplácese por la salida. Cada evento muestra un campoMessageque contiene el hash WHCP. Copie la cadena hash del mensaje.
Método 3: Hacer coincidir el hash WHCP con un archivo de controlador en el disco
- Abrir un símbolo del sistema como administrador
Presione Win + R, escribacmdy luego presione Ctrl + Shift + Enter. - Cambiar a la carpeta del repositorio de controladores
Escribacd %SystemRoot%\System32\DriverStore\FileRepositoryy presione Entrar. - Generar hashes para todos los archivos .sys de la carpeta
Escriba el siguiente comando y presione Entrar:for /r %i in (sys) do @certutil -hashfile "%i" SHA256 | find /v "SHA256" | find /v "CertUtil" >> driverhashes.txt
Esto crea un archivo llamadodriverhashes.txten la carpeta actual con hashes y rutas de archivo. - Buscar el hash WHCP en el archivo de hashes
Escribafindstr "your-64-char-hash" driverhashes.txtreemplazando el marcador de posición con el hash real. La salida muestra la ruta completa al archivo del controlador que coincide.
Problemas comunes al diagnosticar bloqueos de controladores HVCI
No se encuentra el Id. de evento 3043 en el registro Sistema
Si HVCI está habilitado pero no aparecen eventos 3043, el bloqueo puede registrarse como Id. de evento 3042 en su lugar. Filtre por 3042 y 3043. Si aún no hay eventos, verifique que HVCI esté realmente activado yendo a Seguridad de Windows > Seguridad del dispositivo > Aislamiento del núcleo > Integridad de memoria. Si muestra Desactivado, no se están generando bloqueos de controladores.
El hash WHCP no coincide con ningún archivo .sys en DriverStore
Es posible que Windows Update o una herramienta de limpieza de controladores hayan eliminado el controlador bloqueado de DriverStore. En ese caso, el hash no se puede hacer coincidir con un archivo en el disco. Puede buscar el hash en el sitio web del Catálogo de Microsoft Update buscando la cadena hash. Si el controlador se publicó a través de Windows Update, la entrada del catálogo mostrará el nombre y la versión del controlador.
Varios controladores están bloqueados con el mismo hash
Un solo archivo .sys puede ser utilizado por varios dispositivos. El hash se calcula sobre el contenido del archivo, no sobre la instancia del dispositivo. Si el mismo hash aparece en varios eventos 3043, significa que el mismo archivo de controlador se cargó para diferentes identificadores de hardware. Actualizar ese único controlador resuelve todos los bloqueos de ese archivo.
Id. de evento 3043 vs Id. de evento 3042: Diferencias de bloqueo de HVCI
| Elemento | Id. de evento 3043 | Id. de evento 3042 |
|---|---|---|
| Descripción | Registra un controlador que fue bloqueado por HVCI | Registra un controlador que no superó la comprobación de WHCP pero se permitió cargar en modo de auditoría |
| Hash WHCP presente | Sí | Sí |
| Controlador realmente bloqueado | Sí | No |
| Solo modo de auditoría | No | Sí |
El Id. de evento 3042 aparece solo cuando HVCI está en modo de auditoría. El modo de auditoría es una configuración de diagnóstico que registra lo que se bloquearía sin bloquear realmente el controlador. El Id. de evento 3043 aparece cuando HVCI está completamente habilitado y se impide la carga del controlador. Ambos eventos contienen el hash WHCP y se pueden diagnosticar con los mismos métodos.
Para usar el hash WHCP de un evento 3042, siga los mismos pasos que para 3043. El formato del hash y su ubicación en los detalles del evento son idénticos. La diferencia es que con 3042 el controlador sigue en ejecución, por lo que puede probar si eliminar o actualizar el controlador causa problemas antes de habilitar HVCI por completo.
Después de identificar el archivo del controlador, busque una versión firmada por WHCP en el sitio web del fabricante. Si no existe una versión firmada, tiene dos opciones. Puede desinstalar el dispositivo y usar un controlador diferente que sea compatible con WHCP. O puede desactivar la Integridad de memoria en Seguridad de Windows > Seguridad del dispositivo > Aislamiento del núcleo lo que permite que el controlador se cargue pero reduce la protección de seguridad de HVCI.