PDA

Visualizza la versione completa : [OT]: Scrivere driver per Windows XP


salvio78
29-09-2006, 12:28
Scusate ma da quando ho dovutoo scrivere delle librerie in C tramite le jni per farle funzionare con java che mi sto chiedendo una cosa.

Ma un programmatore C/C++ pu scrivere driver per una qualsiasi periferica per windows? So che la risposta scontata, ma la mia domanda in che modo, da quello che ho capito con il DOS bastava richiamare una serie di registri detti Interrupts i quali davano il controllo su le varie porte del PC permettendo di scrivere driver che iteragissero direttamente con la periferica, cos il problema e poi semplice bastava che l'applicazione iteragisse con driver ed il gioco era fatto.

Ma adesso mi chiedo visto che Win Xp e di fatto un p tutta la tecnologia NT, fanno si che un'applicazione non possa accedere direttamente al driver della periferica, ma necessario usare delle api che fanno delle chiamate di sistema, possibile ancora ad esempio usare windows per programmare un qualsiasi dispositivo IO.

Da quello che ho capito i passi dovrebbero essere in caso di risposta affermativa:

1)conoscenza perfetta dell'hardware;

2)Scriver un device driver tramite DDK di microsoft;

3)scrivere una DLL che conterra le chiamate di funzione definite anche dall'utente;

4)scrivere l'applicazione compilarla inserendo tali chiamate di funzione;

Premetto che questo quello che ho estrapolato leggendo altri post, ma la mia domanda di fatto ... E' possibile gestire periferiche sotto windows NT come si faceva con il DOS?

oregon
29-09-2006, 13:14
No ... serve appunto un device driver e il DDK per svilupparlo seguendo le stringenti regole di chiamata delle API del kernel.

salvio78
29-09-2006, 13:26
si ho capito , ma una volta sviluppato il driver, come fare chiamato verso di esso? Voglio dire se mi servisse definire nuove chiamate di funzione? Ho scritto il driver e ci sto, ma poi come faccio si che una qualsiasi applicazione possa colloquiare con esso tramite windows?

oregon
29-09-2006, 13:37
Una applicazione puo' colloquiare con un device driver tramite la chiamata della API

DeviceIoControl

Loading