Descripción del comprobador de controladores estático
Para escribir un controlador sólido que cumpla con windows Driver Model (WDM) o kernel Mode Driver Framework (KMDF), NDIS o Storport, debe tener experiencia y comprender cómo interactúa el controlador con el administrador de E/S. Probar estos controladores es igualmente complicado.
El desarrollo de controladores sólidos puede ser difícil por las siguientes razones:
Los controladores son asincrónicos, incluso en máquinas de un solo procesador.
Los conductores son enormemente reentrantes.
Los controladores usan muchas reglas oscuras.
Los modelos de conductor son evolucionistas y edades a lo largo del tiempo.
La prueba de controladores de dispositivos está limitada por los siguientes motivos:
Observación. No se puede observar un error en la interacción entre el controlador y el sistema operativo. Los controladores pueden infringir reglas de uso implícitas, lo que da lugar a un bloqueo o un comportamiento incorrecto, pero es difícil detectar la causa principal de un error al desarrollar y probar controladores.
Control. Los controladores que funcionan correctamente en circunstancias normales pueden tener errores sutiles que solo se producen en situaciones excepcionales, como cuando un controlador debajo de él en la pila produce un error IRP. Estas situaciones son difíciles de ejercer, por lo que las pruebas tradicionales no detectan adecuadamente las rutas de acceso de error a través del código del controlador.
SDV mejora tanto la observación como el control que tiene al probar controladores. Al definir reglas para el uso adecuado de las funciones WDM, KMDF, NDIS y Storport y supervisar el cumplimiento del controlador con esas reglas, SDV mejora la capacidad de observar errores. Por ejemplo, la regla de WDM LowerDriverReturn especifica que, en determinadas circunstancias, la rutina de distribución de un controlador siempre debe devolver el valor devuelto por el controlador inferior de la pila.
SDV también aumenta el control proporcionando lo siguiente:
Un modelo hostil del entorno del controlador, donde pueden producirse varios escenarios más graves (como las llamadas del sistema operativo continuamente con errores).
Análisis estático eficaz (denominado comprobación de modelos) que explora sistemáticamente todas las rutas de acceso de ejecución posibles en el controlador.
SDV es una herramienta de prueba unitaria esencial para controladores de dispositivos. Coloca un controlador en un entorno hostil y prueba sistemáticamente las rutas de acceso del código a través del controlador buscando infracciones de las reglas de uso del modelo de controlador.
Importante
SDV ya no es compatible y SDV no está disponible en las versiones de WDK o EWDK de Windows 24H2. No está disponible en WDK más reciente que la compilación 26017 y no se incluye en windows 24H2 RTM WDK.
SDV todavía se puede usar descargando windows 11, versión 22H2 EWDK (publicada el 24 de octubre de 2023) con las herramientas de compilación de Visual Studio 17.1.5 desde Descargar el Kit de controladores de Windows (WDK). Solo se recomienda el uso de Enterprise WDK para ejecutar SDV. No se recomienda usar versiones anteriores del WDK estándar junto con las versiones recientes de Visual Studio, ya que esto probablemente provocará errores de análisis.
En el futuro, CodeQL será la herramienta de análisis estático principal para los controladores. CodeQL proporciona un lenguaje de consulta eficaz que trata el código como una base de datos que se va a consultar, lo que facilita la escritura de consultas para comportamientos, patrones y mucho más específicos.
Para obtener más información sobre el uso de CodeQL, consulte CodeQL y la prueba de logotipo de herramientas estáticas.