Ergebnis 1 bis 4 von 4
  1. #1
    Mitglied
    Registriert seit
    Feb 2009
    Ort
    Köln
    Beiträge
    125

    Standard Treiber Programierung / Dynamischer Filter Treiber ???

    Hallo liebe Community,

    ich möchte ein Programm schreiben, welches direkt mit einem Filtertreiber kommunizieren kann. Dieser Filtertreiber soll die Brücke zwischen der USB/HID Hardware und dem Programm (WinUsb) sein. Der Treiber soll paralell zum Originaltreiber laufen und das ausgewählte Gerät auf die Konfiguration untersuchen, um dann anschließend nach der Konfiguration die kommunikation zwischen der Hardware und dem Programm (WinUsb) zu ermöglichen.

    Der Treiber soll mit Programmstart aktiviert und bei beenden auch wieder entladen werden, ohne die orgninalen Treiber irgendwie zu beeinfussen, beziehungsweise deinstalieren zu müssen.

    Das ganze soll auch, natürlich nur wenn das geht Dynamisch ablaufen, um nicht für jedes Gerät einen anderen Treiber installieren zu müssen.Es soll eventuell später auch, also sekundär, 2 bis 3 Geräte auf einmal ansprechen können.

    Es soll ausschließlich um USB/HID Geräteklassen Maus.Tastatur, Joysticks, Gamepads, evt noch andere Eingabegeräte gehen, wobei die anderen Geräte sekundär sind, also erstmal zu vernachlässigen sind.

    Wäre es möglich einen solchen Treiber zu programmieren oder geht sowas nicht?
    Geändert von Mikeatweb (24. 01. 2012 um 03:07 Uhr)

  2. #2
    Mitglied Avatar von lupo1977
    Registriert seit
    Feb 2006
    Ort
    Hier & Jetzt
    Beiträge
    1.151

    Standard Re: Treiber Programierung / Dynaischer Filter Treiber ???

    Natuerlich geht sowas. Lade Dir das DDK herunter und schau in den Subfolder USB. Dort findest Du Beispieltreiber und auch Filtertreiber. Allgemein gibt es auch Beispiele fuer Filtertreiber (Upperfilter, Lowerfilter). Ist alles sehr leicht zu finden.

    Die Kommunikation mit einem Treiber erledigt, unter Windows, die API Funktion DeviceIoControl. Dazu kannst Du im Treiber ein Device sowie einen symbolischen Link darauf erzeugen. Diesen kannst per CreateFile oeffnen.

    Das Laden und Entladen geschieht ueber spezielle Handler im (WDM)-Treiber, schau Dir einfach die Beispiele im DDK an. Den Zeitpunkt des Ladens kannst Du in der Registry festlegen (bzw. beim Erzeugen des Service mit CreateService). Siehe dazu dwStartType.

    Es gibt die Moeglickeit ClassFilterTreiber zu registrieren. Diese werden dann immer angezogen wenn ein Geraet einer bestimmten Klasse erkannt wird. Das zeigt also das es durchaus moeglich ist mehrere Geraete mit dem selben Filter zu verknuepfen.

    Treiberprogrammierung wird in der Regel mit C durchgefuehrt. Ein bisschen Erfahrung und vor allem Disziplin ist hier wirklich wichtig. Ressourcen die Du nicht frei gibst (zB beim Entladen) werden schnell zur Falle. Genauso Programmierfehler aller Art. Wenn Du im Kernel rummurkst sind blaue Bildschirme, mit allen denkbare Konsequenzen, normal. Also etwas vorsicht bitte.

    Achja vielleicht benutzt Du besser gleich das KMDF, falls es Dein Problem zulaesst besser sogar noch das UMDF. Das erspart Dir viele Probleme bei der Fehlersuche.


    Edit:

    Natuerlich haengt es von den Details des konkreten Problems ab wie es genau zu machen ist. Aber prinzipiell geht es.
    Geändert von lupo1977 (24. 01. 2012 um 03:21 Uhr)

  3. #3
    Mitglied

    (Threadstarter)


    Registriert seit
    Feb 2009
    Ort
    Köln
    Beiträge
    125

    Standard Re: Treiber Programierung / Dynamischer Filter Treiber ???

    Das hört sich gut an. Die WinDDK hab ich schon da ich mich schon eine weile mit USB/HID beschäftige allerdingst bis jetzt nur mit der Setup Api und WinUSB. Das scheint aber leider nicht zu reichen.

    Da ich zu lernzwecken auch gerne alles von Grundauf selber Programmiere und nicht auf Fremdtreiber und Liberys zurückgreifen möchte ist das schon OK.

    Ich werde mich da sowieso komplett reinarbeiten müssen.
    Hab bis jetzt überhaupt keine Erfahrung mit Treiberprogramierung.

    Danke dir für die Info.

    Gigt es vieleicht noch ein paar gute Bücher zur Treiberentwicklung die man wirklich empfehlen kann?
    Geändert von Mikeatweb (24. 01. 2012 um 04:45 Uhr)

  4. #4
    Mitglied Avatar von Jodocus_
    Registriert seit
    Aug 2010
    Ort
    Groß Wasserland
    Beiträge
    338

    Standard Re: Treiber Programierung / Dynamischer Filter Treiber ???

    "Programming the Windows Driver Model" vielleicht.

  5.  
     
     

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •