2009-05-18 18 views
18

¿Alguien tiene libros/tutoriales que puedan ser útiles para comenzar con el desarrollo de controladores de dispositivos con Windows?Comenzando con el desarrollo de controladores

Para el desarrollo sencillo de Win32/GUI, el libro de Petzold parece ser la referencia esencial. ¿Existe tal para los conductores?

Me gustaría notar que en realidad no estoy hablando con el hardware, realmente quiero emular un hardware en el software, pero me gustaría ver cómo funcionan las cosas en general primero.

Billy3

Respuesta

11

Una cosa que tengan cuidado con el desarrollo de controlador de dispositivo (arquitectura y herramientas) cambia más que el desarrollo de Win32 ... así que mientras el libro de Petzold desde la década de 1990 está muy bien para Win32 y puede ser considerado como un clásico de siempre , la arquitectura para muchos tipos de controladores (controladores de impresora, controladores de red, etc.) ha variado en varias versiones de O/S.

Aquí hay una entrada de blog que revisa varios libros: Windows Device Drivers Book Reviews.

No olvide la documentación de Microsoft incluida con el DDK: y, lo más importante, los controladores de muestra (código fuente) incluidos con el DDK. Cuando quería escribir un controlador de puerto serie simulado, por ejemplo, encontré que la documentación del controlador de serie de muestra combinada con la documentación DDK era invaluable (y suficiente).

+0

También agregaría que es una buena idea suscribirse a la lista de correo ntdev (http://www.osronline.com/cf.cfm?PageURL=showlists.CFM?list=NTDEV) porque puede ser una gran fuente de información, así como señalar errores comunes. – BCran

+0

Antes de nada debe familiarizarse con el concepto del sistema operativo y después de eso debe familiarizarse con el sistema operativo de Windows (leer las ventanas internas de Mark Russinovich) – AminM

1

Buscaría tutoriales con ejemplos enriquecidos, como this one. La esencia en el desarrollo del controlador de Windows es obtener una idea acerca de las capas y los IRP, IRQL, y también conocer términos como los controladores de filtro. Si está buscando códigos de ejemplo, aquí está mi código de controlador de Spodek: sf.net link. Encontrará un controlador de filtro (para teclado, keyb.c), kernel space queue (queue.c) y técnicas para ocultar presencia en el sistema. Sin embargo, es un controlador heredado (sys).

6

Para aprender bien el desarrollo del kernel:

a. un montón de programas kernel muestras:

DDK de Windows de ejemplo:

muestras

http://social.msdn.microsoft.com/Forums/en-US/softwaretesting/thread/08690203-1757-4129-b59a-6bae10bcdce8/

WDK:

http://msdn.microsoft.com/en-us/windows/hardware/gg487428

O simplemente buscar:

http://www.google.com/search?q=windows+ddk+samples

(porque la URL anterior puede cambiar, pero es probable que Google le devuelva el más apropiado/alcanzable)

b.un montón de técnicas de depuración, y entre los cuales he encontrado el mejor es VMware (o VirtualBox) + windbg + puerto serie depuración:

http://www.google.com/search?q=windbg+vmware+kernel+debug

y este documento es clásico para el uso de VMware + windbg (Señor de la Ring0) :

http://silverstr.ufies.org/lotr0/windbg-vmware.html

c. así como herramientas de administración del sistema que otros han construido:

http://technet.microsoft.com/en-us/sysinternals/bb545021

(En los últimos llamada SysInternals construidas por Mark Russinovich, co-autor de "Windows Internal" - DEBE LEER !!)

http://technet.microsoft.com/en-us/sysinternals/bb963901

de estas herramientas usted tendrá opciones de depuración inmensa.

d. Unirse a la lista de correo OSR (NTDEV sobre todo es muy activo, pero hay otros como windbg):

http://www.osronline.com/page.cfm?name=ListServer

correo. Ver un montón de video relacionado con ventanas + kernel en Channel9 (Google devuelve más de 1000 enlaces):

http://www.google.com/search?q=site:channel9.msdn.com+kernel+video&num=100

f. foro de discusión como:

http://social.microsoft.com/Forums/en-us/kernel/threads

http://social.msdn.microsoft.com/Forums/en-US/wdk/threads

suscrito a la revista OSR libre también (en papel). ¡He recibido el mío desde 1998 hasta ahora, y se entrega a la mitad de la tierra!

1

Personalmente, la mejor manera de comenzar a desarrollarse es exponiéndolo al mundo real. Teniendo esto en mente me gustaría recomendar este libro

The Rootkit Arsenal: Escape and Evasion in the Dark Corners of the System

The Rootkit Arsenal Cover

Debería ser suficiente para que pueda empezar a tener algo de código en ejecución lo que hace "algo" entonces después de haber la imagen general puede incluir temas como: - Diferencia entre métodos almacenados en búfer/ninguno/directos y las peculiaridades asociadas a ellos.

"Programación del modelo de controlador de Windows, 2da edición" también es una gran ayuda cuando necesita detalles sobre algunos temas específicos. Pero primero creo que lo más importante es poner las cosas en contexto y luego construir sobre eso.