Eigenen Treiber programmieren?
Wie programmiert man seinen eigenen Treiber? Welche Programmiersprache nutzt man dafür?
5 Antworten
Ich gehe einfach mal davon aus das wir über Windows Treiber reden:
Zunächst solltest du sehr genau über die Hardware Bescheid wissen für die du den Treiber schreiben möchtest. "Drauf los hacken" ist in den meisten Fällen nicht. Hast du Informationen über die Hardware / Protokolle nicht vorliegen macht es wenig Sinn.. dann müsstest du Reverse Engineering betreiben wozu dir vermutlich die Kenntnisse fehlen (andernfalls würdest du die Frage kaum stellen). Hast du die nötigen Informationen benötigst du das WDK (Windows Driver Development Kit /Areas/Epx/Content/500.htm?aspxerrorpath=/en-us/library/windows/hardware/gg487428.aspx) und ein IDE (normalerweise Visual Studio). Geschrieben werden Treiber in der Regel in C. Teile können unter Umständen auch in C++ geschrieben werden. Verwendung von externen nicht statisch gelinkten librarys ist in der Regel nicht möglich. Sprich alles muss von Hand zu Fuß programmiert oder statisch gelinkt (in den Treiber integriert) werden.
Solltest du noch Fragen haben lese dir am besten erst mal die Doku im WDK durch. Ist dann noch etwas unbeantwortet frag gerne. Aber Treiberentwicklung ist absolut nichts für Anfänger. Fundierte Kenntnisse von Hardware und C sind ein absolutes muss. Denn Debuggen ist in den meisten Fällen nicht oder nur mit Umständen möglich. Man sollte also wissen was man tut.
Das Ziel ist die Kommunikation zwischen den Kernel und Hardware ermöglichen. Dazu kann man nur Assembler, oder wenn glücklich ist, C benutzen.
Treiber programmiert man Hardwarenahe direkt in Assembler oder in C. Wichtig ist, dass Treiber im Ring 0 (Kernel Modus) laufen.
Außerdem braucht du sehr genaue Kenntnisse über die I/O Schnittstelle der Hardware. Wann müssen mit welchen Timing welche Daten geschrieben/gelesen werden, usw...
Wofür einen Treiber?^^ Aber normalerweise C++
Du kannst keinen Treiber für ein Betriebssystem schreiben. Der Grund dafür ist das Du keinen Assembler auf einem 64bit System schreiben kannst. Dann kennst Du die Architektur des Systems nicht das bedeutet das Du das nie schreiben kannst. Dann kennst Du das Chipset nicht auch wenn Du die Datasheets hast kannst Du nichts schreiben denn wohin willst Du das schreiben das ist eine Systemnahe Programmgeschichte. Alles zusammen Du kannst keinen Treiber schreiben.
Warum sollte man kein Assembler auf einer 64bittigen Plattform schreiben können? Mache ich ständig.
Oder beziehst du dich auf die Fähigkeiten des Fragenstellers?
>Du kannst keinen Treiber für ein Betriebssystem schreiben.
So manche Leute verdienen ihr Geld damit. Wie kommst du da drauf?
>Der Grund dafür ist das Du keinen Assembler auf einem 64bit System schreiben kannst.
wieso nicht?
>Dann kennst Du das Chipset nicht auch wenn Du die Datasheets hast kannst Du nichts schreiben denn wohin willst Du das schreiben das ist eine Systemnahe Programmgeschichte.
Dafür gibt es ja Spezifikationen. Und hardwarenahe Softwareentwickler gibt es auch.