Config.sys Devicetreiber

  • Grüße,


    wie programmiert man einen Devicetreiber?
    Ist das Nachladen von Dateien möglich? (und wie bekommt man das Startverzeichnis heraus?)
    Wie fragt man bei Devicetreibern die mitgegebenen Parameter ab? (der PSP ist ja afair beim laden aus der config.sys heraus ja nicht vorhanden)


    /Grüße und danke schoneinmal

    Von allen Dingen auf Erden ist die Intelligenz am gerechtesten verteilt: Jeder glaubt, er hätte genug davon.

  • Hallo Dosenware,


    in welcher Programmiersprache willst du denn deinen Treiber schreiben?
    Im Grunde ist das überhaupt nicht schwer, man muss nur erst einmal wissen, worauf man dabei achten muss.
    Sys-Dateien brauchen einen speziellen Header, die DOS-Versionen ab 5.0 untertützen aber auch normale Exedateien als Deveicetreiber (zum Beispiel Creatives CTCM.EXE).
    Die grundlegenden Systemroutinen sind ja vorher schon geladen woren, daher dürfte das Lesen von anderen Dateien problemlos möglich sein.
    Ich meine mich auch zu erinnern, dass man irgendwie einen Zeiger auf die aktuell zu verarbeitende Zeile der Config.sys, also den Aufruf deines Treibers, abfragen konnte. Das würde dann den fehlenden PSP ersetzen.


    In meinen Leseszeichen mit nützlichen Programmierinfos hatte ich noch diese Seite mit genauen Infos dazu gespeichert:
    Writing MS-DOS Device Drivers By Marcus Johnson, December 01, 1990
    Auf meiner Festplatte habe ich sogar einen Pascal / Assember Quellcode für einen exemplarischen Mini-Devicetreiber gefunden! Glaube, der Code kommt eigentlich aus der SWAG.

    Meine DOS-Rechner:

    Kleiner Industrie-486er mit 100 MHz (Intel 80486DX-4), 32 MB SD-RAM, Diamond SpeedSTAR 24 und SB 16 ( CT2770 ) + TNDY

    "Frankenstein" Pentium II mit 266 MHz, Elsa Winner 1000 TrioV + Voodoo I, SB 16 (CT2290) + Yamaha DB50XG


    Von mir geschriebene DOS-Programme gibt es hier.

  • Wenn ich gut bin wird es etwas universelleres ;)

    Von allen Dingen auf Erden ist die Intelligenz am gerechtesten verteilt: Jeder glaubt, er hätte genug davon.

  • Kannst du mal etwas genauer beschreiben, was dein Device-Treiber machen soll.
    Geht es darum, beim Start gewisse Chipsatz-Register zum Beispiel anhand einer Configurationsdatei mit bestimmten Werten zu initialisieren?

  • Jupp, aber da werde ich noch etwas basteln müssen... vor allem weil das Ganze recht universell sein soll.

    Von allen Dingen auf Erden ist die Intelligenz am gerechtesten verteilt: Jeder glaubt, er hätte genug davon.

  • Ich habe hier ein Buch über die Entwicklung von Device-Treibern. Das Buch heißt "Writing MS-DOS Device Drivers" von "Robert S. Lai". (ISBN 0-201-60837-5). Soweit ich das gelesen habe, gibt es unter DOS zwei Arten von Device-Treibern. So genante Block-Device-Treiber (z.Bsp. eine RAMDisk) und Character Device Treiber (z.Bsp. Tastatur-Treiber). Diese Treiber sind vorrangig dafür da, zur Laufzeit einen Zugriff auf Hardware oder Pseudo-Hardware (Beispiel Ramdisk) zur Verfügung zu stellen. Also einen ständigen Zugriff auf die Geräte zu ermöglichen. Bei dir wird ja aber eher ein einmaliger Aufruf zum Systemstart benötigt. Mann könnte zwar auch in der Initialisierungs-Routine des Treibers einmaligen Sachen aufrufen, und die weiteren Funktionen zum ständigen Zugriff (Device Open, IOCTL Input, IOCTL Output, Device Close etc.) einfach nicht implementieren, aber der Sinn dabei wäre fraglich. Ich denke, das bei deinem Beispiel ein Device-Treiber nicht gerade die beste Wahl ist. Da wäre eine COM oder Exe-Datei, die du beim Systemstart ausführst, eine bessere Wahl.

  • Klar, jedoch können exe bzw. Comdateien normalerweise nicht von der Config.sys aus gestartet werden - und genau das will ich ja.


    Wenn ich das erst später in der Autoexec starte, könnten sonst Dinge wie Himem/Emm stören.

    Von allen Dingen auf Erden ist die Intelligenz am gerechtesten verteilt: Jeder glaubt, er hätte genug davon.

  • Nicht vergessen, dass das Ding keinen Conventional Memory benutzt sonst setzt es eh keiner ein ;) - das dürfte die Sache um den Faktor 2-3 komplexer machen :/

    [ SUCHTLISTE ] [ WD-40 ]

    :bump:Face:bump

    C:\>format c: /y_
    ____________________________________________

    8|

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!