Die grundlegende Struktur eines WDM-Treibers

aus GlossarWiki, der Glossar-Datenbank der Fachhochschule Augsburg
Wechseln zu:Navigation, Suche
Dieser Artikel sollte überarbeitet werden.
Die Regeln für GlossarWiki-Artikel sollten beachten werden.

In diesem Artikel fehlen die Quellenangaben.

Dieser Artikel ist nicht korrekt kategorisiert (siehe Regeln für GlossarWiki-Artikel).

Definition

Das Windows Driver Model ist ein hierarchisches Treiberkonzept, bei dem die zuständigen Treibereines Gerätes, wie bei einem Stapel, aufeinander angeordnet und auch so verbunden

Für ein Gerät sind mindestens zwei Treiber zuständig: der Funktionstreiber und der Bustreiber. Das kommt daher, dass Geräte für moderne Computer meistens an physikalischen Bussystemen wie z.B. PCI, ISA, USB oder IEEE 1394 betrieben werden.

Der Funktionstreiber kann entweder als eigenständiger Treiber ausgeführt sein oder als Kombination aus Treiber und Minitreiber. In jedem Fall übernimmt der Funktionstreiber die I/O-Operationen und die Kommunikation mit Usermode-Anwendungen.

Der Bustreiber ist der zweite notwendige Treiber im Treiberstapel und ermöglicht den physikalischen Zugriff auf einen Bus durch eine Schnittstelle. Es gibt noch optionale Filtertreibern - diese können sich entweder als oberer Filtertreiber vor dem Funktionstreiber oder als unterer Filtertreiber danach positionieren.

Anfragen von Benutzeranwendungen wandern den Treiberstapel von oben nach unten ab, sodass jeder Treiber die Möglichkeit besitzt, eine Anfrage zu bearbeiten, zu modifizieren oder auch zu beenden. Anfragen müssen nicht immer den gesamten Stapel durchlaufen. Wenn z.B.der Funktionstreiber eine Anfrage vollständig bearbeiten kann, wird sie beim Funktionstreiber auch fertig gestellt. Sobald der Bustreiber in die Bearbeitung einer Anfrage involviert ist, wird normalerweise ein neuer IRP erzeugt, sodass die Anfrage durch mehr als einen IRP abgewickelt wird. Ein neuer IRP bedeutet auch, dass ein weiterer Treiberstapel an der Bearbeitung beteiligt ist. Das Betriebssystem nutzt für die Verwaltung eines Gerätes und des zuständigen Treibers verschiedene Objekte, die in bestimmten Beziehungen zueinander stehen. Diese Objekte werden durch das DDK mit Hilfe von Datenstrukturen beschrieben.

Geräteobjekte repräsentieren die physikalischen Geräte und Treiberobjekte repräsentieren die immateriellen Treiber für die gesamte Zeit ihrer Existenz im System. Die Erzeugung und Freigabe der Geräteobjekte muss vom Treiber durchgeführt werden, während bei Treiberobjekten das Betriebssystem dafür zuständig ist. Mehrere gleichartige Geräte werden vom gleichen Treiber verwaltet, indem treiberspezifische Daten im Treiberobjekt und gerätespezifische Daten in einem Geräteobjekt untergebracht sind.

Jedes Gerät besitzt dabei ein eigenes Geräteobjekt pro beteiligtem Treiber. Durch das Feld NextDevice im Geräteobjekt verketten sich die Geräteobjekte eines Treibers zu einer unidirektional verbundenen Liste, deren Anfang im Feld DeviceObject des Treiberobjektes referenziert wird. Jedes Geräteobjekt enthält außerdem im Feld DriverObject einen Verweis auf das zuständige Treiberobjekt. Dieser Aufbau mit all den Geräteobjekten existiert für eine Treiberschicht des Treiberstapels, d.h. sowohl Filtertreiber als auch Funktionstreiber bilden einen solchen Aufbau an Geräteobjekten.