Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Treiberentwicklung (https://www.delphipraxis.net/14989-treiberentwicklung.html)

Borti 20. Jan 2004 08:40


Treiberentwicklung
 
Hi Leute!
Ich brauch dringend Hilfe beim Schreiben eines Treibers für den LPT-Port.
Die erste Möglichkeit wäre, dass ich ein Driver-Developer-Kit benutze.
Besitzt einer von euch eines, oder könnt ihr mir ein spezielles empfehlen?
Die zweite wär’, dass ich mir mit Delphi eine dll mit integriertem Treiber
schreibe. Normale dlls zu erstellen ist kein Problem, aber wie schreib ich
eine Treiber-dll? Habt Ihr auf diesem Gebiet schon Erfahrungen?
Gruß,
Borti

Daniel 20. Jan 2004 08:44

Re: Treiberentwicklung
 
Um Daten an den LPT-Port zu senden, brauchst Du zum Glück keinen echten Treiber. Schaue hierzu einfach mal in den einschlägigen Komponenten-Seiten wie Torry & Co nach dem Stichwort LPT.

Delphi ist leider nicht das beste Werkzeug, um einen Treiber zu entwickeln - da gibt es Geeignetere. Ein kurzer Abriss dazu unter:
http://www.luckie-online.de/artikel/grenzendelphi.shtml

Borti 20. Jan 2004 08:48

Re: Treiberentwicklung
 
Von Komponenten halte ich nicht so viel.
mit Delphi scheint das also ein ziemliches Unterfangen zu sein.
hast du eine DDK?
Ciao,
Borti

Chewie 20. Jan 2004 14:09

Re: Treiberentwicklung
 
Ich wusste gar nicht, dass es verschiedene DKKs für Windows gibt, abgesehen von den verschiedenen Versionen. Grundsätzlich ist das neueste das beste. Allerdings stellt Microsoft seit einiger Zeit das DDK nicht mehr zum Download zur Verfügung, sondern verschickt es nur noch - gegen Rechnung versteht sich. Auf http://www.osronline.com/# gibt es aber immerhin den Dokumentationsteil zum Ansehen.

Aber ich würde dir zusätzlich das Lesen einer Lektüre empfehlen, da Treiber programmieren mehr ist als nur Interrupts bearbeiten und Peripherie ansteuern, auch wenn das schon eine ganze Menge ist.
Auf dieser Seite finden sich Buchtipps und ein Artikel über Treiberentwicklung. Außerdem sind ein zweiter Rechner und ein Nullmodemkabel nützliche Helfer bei der Treiberentwicklung.

Luckie 20. Jan 2004 14:14

Re: Treiberentwicklung
 
Und ich würde dir empfeheln, dir ein gutes C/C++ Forum zu suchen, da es mit Delphi nicht geht.

Alexander 20. Jan 2004 15:24

Re: Treiberentwicklung
 
Das würde ich so nciht sagen, ich weiß nicht genau, aber mit Delphi 8 könnte es vielleicht gehen (ist allerdings auch nur eine Vermutung).

Chewie 20. Jan 2004 15:28

Re: Treiberentwicklung
 
Zitat:

Zitat von Alexander
Das würde ich so nciht sagen, ich weiß nicht genau, aber mit Delphi 8 könnte es vielleicht gehen (ist allerdings auch nur eine Vermutung).

Wieso sollte es mit D8 gehen? .NET ist gedacht für Usermode-Programme, im Kernelmode hat das nichts zu suchen :wink:

Alexander 20. Jan 2004 15:32

Re: Treiberentwicklung
 
Wenn du meinst, Chewie ;-)
Ich wusste es ja auch nicht genau, war wie gesagt nur ne Vermutung...

Borti 20. Jan 2004 17:56

Re: Treiberentwicklung
 
Zitat:

Ich wusste gar nicht, dass es verschiedene DKKs für Windows gibt
schau mal auf http://www.jungo.com/dnload.html! Scheint was anständiges zu sein!
Zitat:

Aber ich würde dir zusätzlich das Lesen einer Lektüre empfehlen, da Treiber programmieren mehr ist als nur Interrupts bearbeiten und Peripherie ansteuern, auch wenn das schon eine ganze Menge ist.
Hört sich gefährlich an! :duck: Kann ich da groß Fehler bauen? :duck:
Jetzt mal ernsthaft: ich bin ja uaf dem Gebiet der Treiberentwicklung noch ein totaler Anfänger. Wie groß ist die Gefahr, dass ich meinen PC, Windows oder sonstiges schrotten?
Ciao, Borti

Chewie 20. Jan 2004 18:14

Re: Treiberentwicklung
 
Zitat:

Zitat von Borti
dass ich meinen PC, Windows oder sonstiges schrotten?

Deinen PC? Sehr gering. Das Problem dabei ist, dass du dir bei jeder Variable, die du verwendest, Gedanken machen musst, wo diese gespeichert werden soll. Also nix mit Variable deklarieren und verwenden, sondern du musst entscheiden, ob sie in einem Speicherbereich liegen darf, der ausgelasgert werden kann, oder ob sie unbedingt in dem vor Auslagerung geschützten Speicherbereich liegt, welcher aber natürlich nur recht begrenzt groß ist - und dein Treiber ist nicht der Einzigste, der Speicher braucht. Wolltest du im Rahmen einer Interrupt Service Routine (ISR) auf eine Variable zugreifen, die in einem ausgelagerten Speicherbereich liegt, dann passiert (zumindest unter NTff) Folgendes: Dein System präsentiert dir einen wunderbaren Systemaufhänger im blauen Gewand - einen Systemstop.
Das passiert bei den meisten Fehlern bei Treibern. Während bei "normalen" Anwendungen Programme sich bei Fehlern recht unproblematisch mit Exceptions oder Laufzeitfehlern melden, wirst du bei Treibern nicht um einen Systemneustart drumrumkommen. Der Grund ist, dass Usermode-Prozesse mit eingeschränkten Rechten laufen, Kernelmode-Prozessen vertraut das System allerdings uneingeschränkt. Bis du also einen funktionierenden Treiber hast, wirst du wohl viele Systemstopps erleben ;)

Ich hab deinen Link angekuckt, interessante Sache, das ist wohl eine grafische Entwicklungsumgebung, mit der man sich einfacher Treiber basteln kann. Aber mit dem DDK meinte ich das DDK von Microsoft. Andere Produkte werden wohl auf diesem aufsetzen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:10 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz