2009-05-18 16 views
18

Qualcuno ha libri/esercitazioni che potrebbero essere utili per iniziare nello sviluppo del driver di periferica Windows?Guida introduttiva allo sviluppo dei driver

Per un semplice sviluppo di Win32/GUI, il libro di Petzold sembra essere il riferimento essenziale. Questo esiste per i conducenti?

Vorrei sottolineare che in realtà non sto parlando di hardware: in realtà voglio emulare un componente hardware nel software, ma mi piacerebbe vedere come funzionano le cose in generale.

Billy3

risposta

11

Una cosa da attenzione è lo sviluppo di driver di periferica (architettura e strumenti) cambia più di sviluppo Win32 ... così mentre il libro di Petzold dal 1990 va bene per Win32 e può essere considerato un classico senza tempo , l'architettura per molti tipi di driver (driver di stampa, driver di rete, ecc.) è variata in varie versioni di O/S.

Ecco un post di blog che esamina vari libri: Windows Device Drivers Book Reviews.

Non dimenticare la documentazione Microsoft inclusa con DDK: e, soprattutto, i driver di esempio (codice sorgente) inclusi con DDK. Quando volevo scrivere un driver di porta seriale simulato, ad esempio, ho trovato che la documentazione del driver seriale di esempio combinata con la documentazione DDK era inestimabile (e sufficiente).

+0

Vorrei anche aggiungere che è una buona idea iscriversi alla mailing list di ntdev (http://www.osronline.com/cf.cfm?PageURL=showlists.CFM?list=NTDEV) perché può essere un grande fonte di informazioni, oltre a segnalare errori comuni. – BCran

+0

Prima di tutto devi familiarizzare con il concetto di sistema operativo e dopo devi familiarizzare con Windows OS (leggi le finestre di Mark Russinovich interne) – AminM

1

Vorrei cercare tutorial con esempi ricchi, come this one. L'essenza dello sviluppo del driver di Windows è di ottenere l'immagine di livelli e IRP, IRQL e anche di conoscere termini come i driver dei filtri. Se stai cercando codici di esempio, ecco il mio codice del driver Spodek: sf.net link. Troverete un driver di filtro (per tastiera, keyb.c), la coda di spazio del kernel (queue.c) e le tecniche per nascondere la presenza nel sistema. È un driver legacy (sys) però.

6

Per apprendere bene lo sviluppo del kernel:

a. un sacco di campioni programmi kernel:

di Windows DDK di esempio:

campioni

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

Oppure basta cercare:

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

(perché l'URL precedente potrebbe cambiare, ma è probabile che Google restituisca quello più appropriato/raggiungibile)

b.un sacco di tecniche di debug, e tra i quali ho trovato la migliore è VMware (o VirtualBox) + windbg + debug seriale:

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

e questo lavoro è classico per l'utilizzo di VMWare + windbg (Lord of the Ring0) :

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

c. così come strumenti di amministrazione di sistema che gli altri hanno costruito:

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

(Negli ultimi chiamato SysInternals costruiti da Mark Russinovich, co-autore di "interno di Windows" - DEVE LEGGERE !!)

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

da questi strumenti avete immenso opzioni di debug.

d. Iscriviti alla mailing list OSR (NTDEV è particolarmente molto attivo, ma ci sono altri come WinDbg):

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

e. Guarda un sacco di video relativo a Windows + kernel al Channel9 (Google ha restituito più di 1000 collegamenti):

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

f. Forum di discussione come:

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

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

Iscritto a rivista OSR troppo libero (cartacea). Ho ricevuto il mio dal 1998 ad oggi - ed è consegnato a metà strada intorno alla terra!

1

Personalmente il modo migliore per iniziare a sviluppare è l'esposizione nel mondo reale. Avendo questo in mente mi piacerebbe consiglio questo libro

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

The Rootkit Arsenal Cover

Dovrebbe essere sufficiente per iniziare ad avere un certo codice in esecuzione che fa "qualcosa", allora dopo aver l'immagine generale si potrebbe soffermarsi su argomenti come - Differenza tra i metodi Buffered/Neither/Direct e le peculiarità associate ad essi.

"Programmare il modello del driver di Windows, 2a edizione" è anche di grande aiuto quando hai bisogno di dettagli su alcuni argomenti specifici. Ma prima credo che la cosa più importante sia mettere le cose nel contesto e poi costruirci sopra.