Quelle: dotnetpro
PnPUtil und DevCon: .NET und Treiber 15.08.2022, 00:00 Uhr

Treiber + .NET?

Windows bietet verschiedene Möglichkeiten, mit Treibern zu interagieren – auch mit solchen für eigene Hardware. Etliches davon lässt sich aus .NET heraus nutzen.
Das Wort Treiber reicht aus, um vielen Entwicklerinnen und Entwicklern den Schweiß auf die Stirn zu treiben. Mit Treibern hat fast jeder täglich zu tun, entweder aus Anwendersicht im eigenen System oder aus Entwicklersicht, wenn es darum geht, Treiber zu entwickeln, zu testen und im Zuge einer Auslieferung auf einem System zu installieren. Im besten Fall läuft das alles reibungslos. Im schlechtesten Fall funktioniert die entsprechende Hardware nicht, die der Treiber ansteuert, oder es wird das gesamte System lahmgelegt.
.NET und Treiber
Die brennende Frage ist, wie gut sich die .NET-Welt und die Treiber-Welt vereinen lassen. Die kurze Antwort ist: Gar nicht.
In der ausführlichen Antwort müssen wir etwas differenzieren. Mit C# Treiber zu entwickeln ist nicht möglich, weil C# die Zwischensprache erzeugt, die von einer virtuellen Maschine (.NET) interpretiert wird. All diese Dinge laufen im Benutzermodus, während WDM-Treiber im Kernelmodus laufen. Das ist daher eine konzeptionelle Hürde an sich.
Das betrifft die Treiber im Kernelmodus, zum Beispiel erstellt mit dem Kernel-Mode Driver Framework (KMDF). Zusätzlich gibt es aber immer mehr Bestrebungen und Entwicklungen für Treiber im User-Mode, beispielsweise erstellt mit dem User-Mode Driver Framework (UMDF). Das Windows Driver Framework (WDF) enthält UMDF, ein Framework für die Erstellung von Treibern für den Benutzermodus. Wie das Kernel-Mode Driver Framework (KMDF) bietet UMDF eine Abstrak­tionsschicht von WDM, die einen Großteil der Plug-and-Play- (PnP) und Energieverwaltungsfunktionen übernimmt und dem Treiber die Möglichkeit gibt, sich für bestimmte Funktionen und die Ereignisbehandlung zu entscheiden. Ein Treiber im Benutzermodus wird vom Treiber-Manager gestartet und läuft in ­einem Treiber-Host-Prozess. Eine einzelne Instanz des Treibers kann gleichzeitige Anfragen von mehreren Anwendungen bedienen. Um mit dem Treiber zu kommunizieren, stellen Anwendungen über das Win32-API E/A-Anforderungen an das Gerät des Treibers.

Jetzt 1 Monat kostenlos testen!

Sie wollen zukünftig auch von den Vorteilen eines plus-Abos profitieren? Werden Sie jetzt dotnetpro-plus-Kunde.
  • + Digitales Kundenkonto,
  • + Zugriff auf das digitale Heft,
  • + Zugang zum digitalen Heftarchiv,
  • + Auf Wunsch: Weekly Newsletter,
  • + Sämtliche Codebeispiele im digitalen Heftarchiv verfügbar