Sie können einen vollständigen Gerätetreiber nur in C oder C++ nicht entwickeln. Sie müssen einigen Assemblierung-Code einbinden und Sie können den größten Teil der Funktionen nicht in der C-laufzeitbibliothek verwenden.
Wie folgt lauten die drei Hauptprobleme, die bei dem Entwickeln eines Gerätetreibers in C auftreten:
| | Das Exe-Dateiladeprogramm befindet sich in COMMAND.COM, das nicht verfügbar ist, wenn MS-DOS einen Gerätetreiber lädt. Deshalb muss ein Gerätetreiber das binäre Abbild eines single-segment Programms sein. Microsoft C/C++ Version 7.0 führte die Möglichkeit ein, den Code in dem kleinen Speichermodell, in dem die Anwendung Code seinen speichert, und die Daten in einem Speichersegment zu generieren.
|
| | Der Initialisierung-Laufzeit-C-code erfordert ein entsprechendes PSP (Programmsegmentpräfix) und erfordert MS-DOS MS-DOS verfügbar sein. Obwohl der C-compiler den Quellcode an dem Startcode enthält befindet sich der meist Startcode in Assembler und der meist Startcode wird Hauptänderungen in einem Treiber hilfreich sein, erfordern.
|
| | Die Entry-exit-Reihenfolge, die von C-funktion verwandt werden, sind für Verwendung in einem MS-DOS-Treiber nicht geeignet.
|
Sie können dieser einiger Einschränkungen umgehen, indem Sie den C-compiler verwenden, um Assemblierung-Code zu generieren. Das Fa, die Anweisung Schalter dem Compiler gibt, einen Assemblierung-Code zu erstellen, der den den auflistet, dass Sie bearbeiten, und als den Treiberquellcode als Teil verwenden können. Je nach der Komplexität des MS-DOS-Gerätetreibers konnten Sie den meisten Treiber in C schreiben, Sie konnten den Code ändern und Sie konnten relativ problemlos verwalten.