Domanda

Qualcuno sa modi per automatizzare parzialmente o completamente l'installazione del driver di prova?

Sono nuovo di sviluppo di driver e sono abituato a più di un approccio test-driven in linguaggi di livello superiore, in modo da passare al tipo di ambiente in cui non posso facilmente verificare come vado è stato un passo avanti per me. Sto usando Virtual PC per il mio ambiente di test e attualmente ho per ripristinarlo, Gestione periferiche aperto, scegliere il dispositivo, scegliere attraverso una serie di " Sei davvero sicuro che non sarebbe invece installare uno di questi driver di sistema " tipo le finestre di dialogo, poi finalmente resettare l'ambiente di test durante il riavvio WinDbg nella macchina host così come l'ambiente di test è l'avvio ... Argh.

Dopo aver ripetuto questo processo già molte, molte volte, sicuramente ci deve essere un essere un modo migliore di fare questo? Quali strumenti / metodi / trucchi non gli sviluppatori di driver commerciali usano a correre su loro autista in un ambiente di prova?

Nota, non si tratta di driver unit test, non ho avuto modo di quella fase ancora o sapere se è ancora possibile. Questo è solo di sparare su un ambiente di test con WinDbg collegato a fare in modo che qualche piccolo cambiamento io possa aver fatto sta facendo quello che mi aspetto.

È stato utile?

Soluzione

Mi sembra che un software di virtualizzazione + un approccio (stratificazione) " oggetti mock " (come suggerito da Aaron Digulla) + script (come suggerito da Sergio) può semplificare lo sviluppo di driver di periferica.

Ma se si utilizza Visual Studio per sviluppare applicazioni a livello utente, è possibile utilizzarlo per il kernel di sviluppo di driver di periferica anche con VisualDDK (+ VirtualKD per eseguire il debug su una named pipe, che è più veloce su una porta COM virtuale) , che affronta specificamente i fastidi che voi dite; dalla sua home page:

  

... Questo progetto porta la semplicità e la   comodità di applicazione di Windows   di sviluppo per lo sviluppo conducente   mondo. Non più la creazione manuale di   costruire gli script, la copia del conducente   file, installano i driver dal INFS,   commutazione tra WinDbg e   editor di origine o in attesa di secondi   dopo ogni passo a causa della extra-slow   porta COM virtuale. Basta creare un driver   progetto che utilizza una vantaggiosa driver   Wizard, selezionare una macchina virtuale, e   godere di debug direttamente il driver   da Visual Studio. Vuoi mettere alla prova un   modificare? Basta normalmente premere Shift-F5,   modificare il driver, ricostruirlo e   lanciare di nuovo . VisualDDK scaricherà   il vecchio driver, installare il nuovo   e caricarlo automaticamente e velocemente.   Annoiato con i file di simboli di carico WINDBG   per i minuti e alzando lo sguardo per simboli   secondi? Basta che VisualDDK ottimizzare   questo per voi utilizzando la propria DIA-based   motore di simbolo. Utilizzando C ++ / STLPort in   i driver? VisualDDK sarà nativamente   visualizza tutti i contenitori STL e   stringhe, buono come Visual Studio fa   per applicazioni in modalità utente. ...

Altri suggerimenti

È possibile scrivere alcuni script di shell (utilizzando Sc.exe e devcon.exe) per automatizzare le attività di distribuzione (senza dispositivo di apertura Manager, facendo clic sui pulsanti, ecc). E fare un'istantanea del sistema di pronto per il debug (non è necessario attendere l'avvio del sistema).

Non dimenticare di controllare il conducente con DriverVerifier!

Esempio di mio script:)

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

Segui i consigli ho dato qui . In sostanza, testare il meno possibile con il sistema reale.

Nel tuo caso, ho un altro suggerimento: Virtual PC utilizza un disco rigido virtuale (che è probabilmente un file sul disco rigido reale)

.

Non è necessario installare il driver, si può semplicemente sostituire i nuovi file nel disco rigido virtuale. Questo spesso non è possibile nel sistema in esecuzione, ma in un sistema virtuale, è possibile aprire il file di disco virtuale e cambiarlo (a partire da Windows non sta bloccando i file in essa contenuti).

Non sono sicuro su Virtual PC, ma altri emulatori sono dotati di strumenti per lavorare con le immagini disco virtuali. Se VPC non può farlo, controlla VirtualBox .

Tutto dipende un po 'da che tipo di driver che si sta scrivendo. Ma in molti casi, la scrittura di un makefile appropriato (o qualcosa di simile) che gestisce l'installazione del driver, start / stop, e il lancio di un test harness può già essere abbastanza buono.

Ho anche configurare tutte le mie macchine di prova per automaticamente accesso (AutoAdminLogon), mappare le unità di rete, e lanciare un prompt dei comandi appropriata dopo l'avvio. L'esecuzione di un test specifico è quindi una questione di battitura a macchina in un unico comando solo.

Una parola riguardante VirtualPC: VirtualPC è molto utile per lo sviluppo in modalità kernel, ma non dimenticate che emula una macchina monoprocessore solo - in modo da essere sicuri di testare regolarmente il codice su una macchina multiprocessore pure. Detto questo, il trucco VHD può sembrare a portata di mano, ma in qualche modo si lega a Virtual PC -. Scrittura di script appropriati che funzionano allo stesso modo su VirtualPC come su una vera e propria macchina sembra quindi un approccio migliore per me

Infine, lo considerano una spina spudorato, ma se siete alla ricerca di un quadro unit testing per il codice in modalità kernel di Windows, ho scritto uno: CFIX .

Credo che l'utilità DevCon (descritto in questo OSR linea articolo ) ti aiuterò. Si dovrebbe essere in grado di file batch di installazione che fanno il lavoro su un clic.

E 'libero di iscriversi con osronline.com, e probabilmente dovrà iscriversi per arrivare a tale articolo. E se si sta scrivendo driver, si desidera iscriversi. Questi ragazzi hanno fatto questo per lungo tempo, e c'è un sacco di veramente buone informazioni su quel sito web.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top