Prueba de logotipo de herramientas estáticas

Esta prueba realiza un análisis estático diseñado para mejorar la fiabilidad y la seguridad de los controladores. Los envíos de controladores en modo kernel son necesarios para pasar la prueba de logotipo de herramientas estáticas para la certificación. CodeQL debe usarse para el análisis estático de un controlador en modo kernel para su envío a Microsoft para su firma o certificación con el fin de cumplir con el Programa de compatibilidad de hardware de Windows.

Detalles de la prueba

   
Especificaciones
  • Device.DevFund.StaticTools.StaticAnalysisForDrivers
Plataformas
  • Cliente Windows 11 (x64)
  • Windows 11, Cliente (ARM64)
  • Windows Server
Versiones compatibles
  • Cliente Windows 11 (x64)
  • Windows 11, Cliente (ARM64)
  • Windows Server
Tiempo de ejecución esperado (en minutos) 5
Categoría Desarrollo
Tiempo de espera (en minutos) 0
Requiere reinicio false
Requiere una configuración especial false
Tipo automatic

Análisis estático para la certificación de cliente de Windows

CodeQL es una potente tecnología de análisis estático para proteger el software. La combinación de un amplio conjunto de consultas de seguridad de alto valor y una plataforma sólida lo convierten en una herramienta valiosa para proteger el código de controlador de terceros.

En un esfuerzo por elevar la barra de seguridad del ecosistema de Windows, Microsoft ha agregado este requisito al Programa de compatibilidad de hardware de Windows, que indica que todos los envíos de controladores deben usar el motor CodeQL en el código fuente del controlador y corregir las consultas que se consideran de "corrección obligatoria".

Este requisito se aplica mediante la prueba de logotipo de herramientas estáticas.

Consulte CodeQL y la prueba de logotipo de herramientas estáticas para obtener más información sobre cómo descargar y ejecutar CodeQL en el código fuente del controlador. Siguiendo esa página junto con la sección "CodeQL y generación de DVL" siguiente se asegurará de que la prueba de logotipo de herramientas estáticas consuma correctamente los resultados de la ejecución de CodeQL en el código fuente del controlador como parte de la prueba de logotipo de herramientas estáticas.

¿A qué tipos de controladores se aplica CodeQL y la prueba de logotipo de herramientas estáticas?

En la actualidad, la prueba de logotipo de herramientas estáticas requiere que se ejecute CodeQL y que se pase el conjunto de consultas "Must-Fix" para todos los controladores en modo kernel, excepto los controladores de gráficos. Tenga en cuenta que la ejecución de CodeQL en controladores gráficos es muy recomendable aunque no sea obligatoria actualmente. Algunas consultas también pueden encontrar defectos útiles en los componentes en modo de usuario.

Se prevé ampliar la prueba y sus consultas para requerir resultados para controladores gráficos, controladores de modo usuario y componentes de controladores, así como otros componentes del paquete de controladores en el futuro. Si encuentra un comportamiento inesperado o falsos positivos que ejecutan CodeQL en controladores gráficos o controladores en modo usuario, envíe un problema a través del repositorio Windows-Driver-Developer-Supplemental-Tools.

Si ejecuta la prueba en un controlador de gráficos, la prueba se rellenará en el HLK, pero pasará de forma predeterminada. Si solo ejecuta componentes en modo usuario o envía un paquete de controladores sin código (es decir, una extensión inf), es posible que la prueba no se rellene. Si envía un componente en modo kernel y la prueba no se rellena inesperadamente, asegúrese de que el controlador esté firmado (consulte la nota siguiente).

Novedades del análisis estático para la certificación de Windows Server

Para la certificación de Windows Server 2025, CodeQL se convertirá en la herramienta necesaria para la prueba de logotipo de herramientas estáticas, lo que implica que todos los envíos de controladores deben superar como mínimo todas las reglas de "corrección obligatoria" para que sea aceptable para WHCP. Sin embargo, si está certificando para Windows Server 2022 y versiones posteriores; se puede usar CA, SDV y CodeQL. Use compilaciones de WDK con las versiones del sistema operativo coincidentes.

Para obtener información sobre cómo descargar diferentes versiones del WDK, consulte Descarga del Kit de controladores de Windows (WDK). Únase al Programa de Windows Insider para descargar las compilaciones de WDK Insider Preview (https://aka.ms/wipwdk).

CodeQL y generación del registro de comprobación de controladores (DVL)

Microsoft está aplicando el requisito de ejecutar consultas CodeQL con la prueba de logotipo de herramientas estáticas. La prueba de logotipo de herramientas estáticas usa un registro de comprobación de controladores (DVL) para recopilar resultados de diferentes análisis estáticos que se ejecutan en el código fuente del controlador. A continuación, este DVL se analiza como parte de la prueba de logotipo de herramientas estáticas a través de una prueba HLK.

Los resultados de CodeQL seguirán el mismo modelo de uso de un DVL para mostrar que el controlador que se está certificando ejecutó las consultas codeQL adecuadas para superar la prueba HLK para la certificación.

Coloque el archivo .sarif en el mismo directorio que el archivo .vcxproj para el que se genera un DVL. El nombre exacto no importa siempre que el archivo finalice con ".sarif".

Documentación adicional

Las pruebas de esta área de características podrían tener documentación adicional, incluyendo requisitos previos, configuraciones e información sobre solución de problemas, que pueden encontrarse en los siguientes temas:

Ejecución de la prueba

Antes de ejecutar la prueba, debe crear un registro de comprobación de controladores (DVL) siguiendo estos pasos.

  1. Ejecute CodeQL, el comprobador de controladores estáticos y la herramienta de análisis de código necesarios en el código fuente del controlador.

  2. Ejecute la utilidad que genere el archivo DVL. Para obtener más información sobre cómo crear un archivo de registro de comprobación de controladores para incluirlo con el envío, consulte Creación de un registro de comprobación de controladores.

  3. Copie el archivo DVL del equipo que se usó para crear el archivo DVL en el equipo de prueba que se usa al ejecutar la prueba de logotipo de herramientas estáticas. Copie el archivo en el directorio %systemdrive%\DVL del equipo de prueba. Asegúrese de eliminar el contenido del directorio en el equipo de prueba antes de copiar el nuevo registro de comprobación del controlador.

  4. Ejecutar la prueba de logotipo de herramientas estáticas. Si la prueba no se rellena en el HLK, asegúrese de que el controlador esté firmado (consulte a continuación). Como alternativa, si no envía un archivo .sys como parte del paquete, se espera que la prueba no se rellene.

Nota:

El objetivo de la prueba de logotipo de herramientas estáticas es requerirle, como desarrollador de controladores, que ejecute CodeQL en el controlador antes del envío para ayudar a eliminar errores. Sin embargo, en el pasado hemos recibido informes de que la prueba había solicitado erróneamente resultados de CodeQL para otros controladores de la pila debido a una limitación arquitectónica, bloqueando la certificación.

Para resolver este problema en Windows 24H2, hemos pasado a un modelo en el que se comprueba la firma del controlador para el dispositivo sometido a prueba. Con este cambio, la prueba no marcará los controladores de Windows de la bandeja de entrada. Además, para desbloquear a los desarrolladores que realizan pruebas de HLK en otros dispositivos de terceros, la prueba también evitará marcar los resultados de los controladores firmados por WHCP.

Al ejecutar esta prueba para la certificación, el controlador debe estar firmado para asegurarse de que la prueba funciona correctamente. Si no lo hace, la prueba podría no advertir sobre infracciones de CodeQL o la prueba podría no enumerar.

Nota:

La prueba de logotipo de herramientas estáticas solo requiere el archivo DVL para mostrar que se ha ejecutado CodeQL. La prueba no requiere que se superen todas las reglas. Además, este trabajo debe ejecutarse en el servidor con escritorio. Si se produce un error en la prueba de HLK mediante Server Core (con un mensaje de error: "no se pudo encontrar RoMetadata.dll"), la solución alternativa consiste en ejecutarla en el servidor con escritorio y, a continuación, combinar el paquete con el paquete que contiene los resultados de Server Core. Puede encontrar información sobre cómo combinar paquetes aquí: /windows-hardware/test/hlk/user/merge-packages.

Solución de problemas

Para solucionar problemas genéricos de errores de prueba de HLK, consulte Solución de problemas de errores de prueba de HLK de Windows.

Información adicional

Sintaxis del comando

Opción de comando Descripción

TE.exe /inproc /enablewttlogging /appendwttlogging Devfund_DvlTest.dll /p:WDKClass=[WDKClass] /p:DeviceClass=[DeviceClass] /p:QueryDriverNames=[QueryDriverNames]

Ejecuta la prueba.

Nota:

Para obtener ayuda de la línea de comandos para este archivo binario de prueba, escriba /?.

Lista de archivos

Archivo Location

Devfund_DvlTest.dll

<testbinroot>\OSBinRoot

Microsoft.StaticToolsLogo.ObjectModel.dll

<testbinroot>\OSBinRoot

TE.exe

<testbinroot>\OSBinRoot

Parámetros

Nombre de parámetro Descripción de los parámetros
WDKClass Clase de dispositivo
DeviceClass Parámetro Device Class
QueryDriverNames Nombres de controladores esperados.