Ausgangspunkt für die Codierung eines virtuellen Geräts

8

Ich möchte etwas wie DaemonTools schreiben: eine Software, die sich dem System als echtes Gerät präsentiert ( eine DVD-ROM im vorherigen Beispiel), liest aber stattdessen die Daten aus einer Datei. Meine Anforderung ist nicht auf DVD-ROM beschränkt. Das erste Ziel ist ein Joystick / Gamepad für Windows.

Ich bin ein Webentwickler, also weiß ich nicht, wo ich ein solches Projekt starten könnte. Ich glaube, dass es in C / C ++ geschrieben werden muss, aber abgesehen davon habe ich keine Ahnung, wo ich anfangen soll.

Hat jemand so etwas probiert und kann mir ein paar Starttipps geben?

    
Nicolae Surdu 19.01.2012, 10:23
quelle

1 Antwort

8

Die meisten Treiber werden entweder in C oder C ++ geschrieben. Wenn Sie diese Sprachen also nicht gut beherrschen, sollten Sie sich mit ihnen vertraut machen, bevor Sie beginnen. Windows-Programmierung verwendet viele interessante Verknüpfungen, die für einen Anfänger verwirrend sein können - zum Beispiel PVOIDs ( typedef void* PVOID ) und LPVOIDs ( typedef void* far LPVOD; ). Sie müssen mit Zeigern als Konzepte sowie Strukturen glücklich sein, weil Sie eine Menge von ihnen verwenden werden. Ich würde vorschlagen, eine wirklich einfache Win32-App als Übung zu schreiben, um mit dem Windows-Stil von C / C ++ umzugehen.

Ihr nächster Anlaufpunkt ist dann die Navigation im Windows Driver Kit - speziell für Sie Ich brauche es, um Treiber für Windows zu bauen. In diesem Stadium hängt meine Fähigkeit, zu beraten, wirklich davon ab, was Sie tun und welche Hardware Sie zur Verfügung haben usw., oder ob Sie wirklich Hardware verwenden. Sie müssen wissen, wie Sie Ihre Hardware steuern und von dort müssen Sie eine geeignete Möglichkeit zum Schreiben eines Treibers wählen - es gibt mehrere verschiedene Arten von Treibern, je nachdem, was Sie erreichen müssen, und es könnte sein, dass Sie anschließen können einer von diesen.

Das Windows-Treiber-Kit enthält eine recht große Anzahl von Beispielen, einschließlich eines Treibers, der einen virtuellen Toaster implementiert. Diese sollten Ihnen Startpunkte bieten.

Ich schlage vor, dass Sie das in einer virtuellen Maschine testen. Wenn Ihr Treiber erfolgreich erstellt wird, aber einen Laufzeitfehler verursacht, kann das Ergebnis Windows vollständig zum Absturz bringen, wenn Sie sich im Kernel-Modus befinden. Sie werden sich daher etwas Mühe ersparen, indem Sie die virtuelle Maschine wiederherstellen können, wenn Sie sie beschädigen, und auch nicht auf den Systemneustart warten müssen. Es erleichtert auch das Debugging, da virtuelle serielle Kabel verwendet werden können.

Das ist ein ziemlich großes Unterfangen, also bevor Sie anfangen, würde ich die Windows-Entwicklung gründlicher untersuchen - prüfen Sie, dass Sie es nicht zuerst mit den Windows-APIs machen können, dann schauen Sie sich das Benutzer-Modus-Treiber-Framework an Schließlich und nur wenn Sie müssen, schauen Sie sich die Kernel-Ebene Zeug.

    
user257111 19.01.2012, 12:26
quelle

Tags und Links