2009-10-16 19 views
11

¿Alguien sabe cómo automatizar total o parcialmente la instalación de la prueba del controlador?Automatización de Win32 Driver Testing

Soy nuevo en el desarrollo de controladores y estoy acostumbrado a un enfoque basado en pruebas en idiomas de nivel superior, por lo que pasar al tipo de entorno en el que no puedo probar fácilmente ha sido un paso adelante para yo. Estoy usando Virtual PC para mi entorno de prueba y actualmente tengo que reiniciarlo, abrir el administrador de dispositivos, elegir el dispositivo, hacer clic en un montón de "¿Estás seguro de que no vas a instalar uno de estos controladores de sistema?" tipo de cuadro de diálogo , luego reinicie el entorno de prueba mientras reinicia WinDbg en la máquina host justo cuando el entorno de prueba se está iniciando ... argh.

Después de repetir este proceso muchas, muchas veces, seguramente tiene que haber una mejor forma de hacerlo. ¿Qué herramientas/métodos/trucos usan los desarrolladores de controladores comerciales para ejecutar su controlador en un entorno de prueba?

Nota, esto no se trata de unidades de prueba de controladores, todavía no he llegado a esa etapa o sé si es posible. Esto se trata simplemente de activar un entorno de prueba con WinDbg adjunto para asegurarme de que un pequeño cambio que pueda haber hecho sea hacer lo que espero.

Respuesta

8

Me parece que un software de virtualización + un "mock objects" (estratificación) enfoque (según lo sugerido por Aaron Digulla) + scripts (como sugiere Sergius) puede simplificar el desarrollo del controlador de dispositivo.

Pero si se utiliza Visual Studio para desarrollar aplicaciones de nivel de usuario, que se puede utilizar para el desarrollo de controladores de dispositivos del núcleo también con VisualDDK (+ VirtualKD para depurar a través de una tubería con nombre, que es más rápido que en un puerto COM virtual), que aborda específicamente las molestias que mencionas; desde su página de inicio:

... Este proyecto reúne la simplicidad y conveniencia de el desarrollo de aplicaciones de Windows al mundo de desarrollo de pilotos . creación manual de no más de scripts de construcción, copia de los archivos de controladores , la instalación de controladores de INFs, conmutación entre WinDbg y el Editor fuente o en espera de segundos después de cada paso debido al puerto COM virtual extra lenta . Simplemente cree un proyecto de controlador usando un conveniente Driver Wizard, seleccione una máquina virtual, y disfrute depurando su controlador directamente desde Visual Studio. ¿Desea probar un cambio ? Simplemente presione Shift-F5, modifique su controlador, vuelva a generarlo y inicie de nuevo. VisualDDK descargará el controlador anterior, instalará el nuevo y lo cargará automáticamente y rápidamente. Aburrido con WinDbg cargando archivos de símbolos por minutos y buscando símbolos para segundos? Simplemente deje que VisualDDK optimice esto para usted usando su propio motor de símbolos basado en DIA. ¿Utiliza C++/STLPort en sus controladores? VisualDDK mostrará de forma nativa todos los contenedores STL y las cadenas , y Visual Studio hace para las aplicaciones en modo de usuario. ...

+0

¡Que VisualDDK es exactamente lo que estaba buscando, gracias! –

+0

De nada. – MaD70

+0

+1 para VisualDDK y VirtualKD – Robert

4

Siga el consejo que di here. Básicamente, prueba lo menos posible con el sistema real.

En su caso, tengo otro consejo: Virtual PC está utilizando un disco duro virtual (que probablemente sea un archivo en su disco duro real).

No necesita instalar su controlador, simplemente puede reemplazar los archivos nuevos en el disco duro virtual. Esto a menudo no es posible en el sistema en ejecución, pero en un sistema virtual, puede abrir el archivo de disco virtual y cambiarlo (ya que Windows no está bloqueando los archivos en él).

No estoy seguro acerca de Virtual PC pero otros emuladores vienen con herramientas para trabajar con imágenes de discos virtuales. Si VPC no puede hacerlo, consulte VirtualBox.

+0

interesante, eso definitivamente suena más fácil, lo investigaré –

6

Puede escribir algunos scripts de shell (usando sc.exe y devcon.exe) para automatizar las tareas de implementación (sin abrir el administrador de dispositivos, hacer clic en los botones, etc.). Y haga una instantánea del sistema lista para depurar (no es necesario esperar al inicio del sistema).

¡No olvide comprobar su controlador con DriverVerifier!

ejemplo de mi propio guión :)

sc create FsFilter type= filesys binPath= c:\FSFilterDrv.sys 
sc start FsFilter 
pause 
sc stop FsFilter 
sc delete FsFilter 
3

Todo depende un poco en qué tipo de controlador que está escribiendo. Pero en muchos casos, escribir un archivo MAKE apropiado (o algo similar) que maneje la instalación del controlador, inicio/detención y el lanzamiento de un arnés de prueba ya puede ser lo suficientemente bueno.

También configuro todas mis máquinas de prueba para iniciar sesión automáticamente (AutoAdminLogon), asignar unidades de red e iniciar un símbolo del sistema apropiado después del inicio. Ejecutar una prueba específica es solo cuestión de escribir en un solo comando.

Una palabra sobre VirtualPC: VirtualPC es muy útil para el desarrollo del modo kernel, pero no olvide que emula una máquina uniprocesador solamente, así que asegúrese de probar regularmente el código en una máquina multiprocesador también. Dicho esto, el truco de VHD puede parecer útil, pero de alguna manera te vincula con Virtual PC, escribir guiones adecuados que funcionen igualmente en VirtualPC como en una máquina real, por lo que parece ser un mejor enfoque para mí.

Por último, considérelo un enchufe desvergonzado, pero si está buscando un marco de prueba de unidad para el código del modo kernel de Windows, he escrito uno: cfix.

2

Creo que la utilidad DevCon (descrita en this OSR Online article) te ayudará. Debería poder configurar los archivos por lotes que hacen el trabajo con un solo clic.

Registrarse en osronline.com es gratis, y es probable que deba registrarse para acceder a ese artículo. Y si está escribiendo controladores, QUIERE inscribirse. Estos muchachos han estado haciendo esto durante mucho tiempo, y hay mucha información realmente buena en ese sitio web.