2012-01-19 7 views
8

Voglio scrivere qualcosa come DaemonTools: un software che si presenta al sistema come un dispositivo reale (un DVD-ROM nell'esempio precedente) ma legge invece i dati da un file. Il mio requisito non è limitato al DVD-ROM. Il primo obiettivo è un joystick/gamepad per Windows.Punto iniziale per la codifica di un dispositivo virtuale

Sono uno sviluppatore web, quindi non so da dove potrei iniziare un progetto del genere. Credo che dovrà essere scritto in C/C++, ma a parte questo, non ho idea di dove cominciare.

Qualcuno ha provato qualcosa di simile e può darmi qualche consiglio di partenza?

+0

Come utilizzeresti un gamepad in questo modo, sicuramente una volta caricata la tua applicazione di gioco, ecc. Non avresti più alcun set di messa a fuoco o controllo con il gamepad virtuale (a quanto ho capito)? –

+0

Cosa succede se controlli il "gamepad" da un'altra macchina via lan/internet/TCP? –

+0

In teoria dovrebbe essere possibile, tuttavia il motivo principale per lo sviluppo di soluzioni virtuali è quello di risparmiare sul costo hardware del prodotto, ecc., In questo caso però non è necessario acquistare un gamepad ma è necessario acquistare un altro pc per eseguire se non l'hai già fatto. Apprezzo che questo sia solo un progetto, ma vale la pena di pensare a come l'implementazione funzionerà prima di passare ore a codificarlo:) –

risposta

8

La maggior parte dei driver sono scritti in C o C++, quindi se non si conoscono tali lingue abbastanza bene, è necessario familiarizzarsi con loro prima di iniziare. La programmazione Windows utilizza molte scorciatoie interessanti che potrebbero essere fonte di confusione per un principiante, ad esempio PVOIDs (typedef void* PVOID) e LPVOIDs (typedef void* far LPVOD;). Avrai bisogno di essere contento degli indicatori come concetti e strutture perché ne userai molti. Suggerirei di scrivere un'applicazione win32 davvero semplice come esercizio per familiarizzare con lo stile Windows di fare C/C++.

Il prossimo porto di scalo è quindi la navigazione nello Windows Driver Kit, in particolare, è necessario per creare driver per Windows. In questa fase la mia capacità di consulenza dipende molto da cosa stai facendo e dall'hardware che hai a disposizione, ecc. O dal fatto che tu stia davvero usando l'hardware. Avrai bisogno di sapere come guidare il tuo hardware e da lì dovrai scegliere un modo appropriato di scrivere un driver - ci sono diversi tipi di driver a seconda di ciò che devi realizzare e potrebbe essere possibile collegarlo uno di questi.

Il kit di driver per Windows contiene un numero piuttosto elevato di campioni, incluso un driver che implementa un tostapane virtuale. Questi dovrebbero fornirti i punti di partenza.

Suggerisco caldamente di eseguire il test in una macchina virtuale. Se il tuo driver crea correttamente, ma causa un errore di runtime, il risultato potrebbe bloccare completamente Windows se sei in modalità kernel. Quindi ti risparmierai un po 'di dolore potendo ripristinare la macchina virtuale se la danneggi, così come non dover aspettare il riavvio del sistema. Inoltre, faciliterà il debug in quanto è possibile utilizzare i cavi seriali virtuali.


Questo è piuttosto un grande impegno, quindi prima di iniziare, mi piacerebbe la ricerca di sviluppo di Windows più a fondo - controllare, non è possibile farlo utilizzando le API di Windows, poi hanno uno sguardo alla modalità utente framework di driver, quindi, infine, e solo se necessario, esaminare le informazioni a livello di kernel.

+0

+1 un sacco di risposte a domande come questa sono "non fare". Anche se ciò potrebbe essere sconsigliabile, la tua risposta è stata molto istruttiva. –

Problemi correlati