Einführung in Geräteobjekte
Das Betriebssystem stellt Geräte nach Geräteobjekten dar. Jedem Gerät sind mindestens ein Geräteobjekt zugeordnet. Geräteobjekte dienen als Ziel aller Vorgänge auf dem Gerät.
Kernelmodustreiber müssen mindestens ein Geräteobjekt für jedes Gerät erstellen, mit den folgenden Ausnahmen:
Minidriver, denen eine Klasse oder ein Porttreiber zugeordnet ist, müssen keine eigenen Geräteobjekte erstellen. Die Klasse oder der Porttreiber erstellt die Geräteobjekte und sendet Vorgänge an den Minitreiber.
Treiber, die Teil von gerätetypspezifischen Subsystemen sind, z. B. NDIS-Miniporttreiber, lassen ihre Geräteobjekte vom Subsystem erstellen.
In der Dokumentation für Ihren bestimmten Gerätetyp erfahren Sie, ob Ihr Treiber eigene Geräteobjekte erstellt.
Einige Geräteobjekte stellen keine physischen Geräte dar. Ein rein softwarebasierter Treiber, der E/A-Anforderungen verarbeitet, diese Anforderungen aber nicht an Hardware weitergibt, muss dennoch ein Geräteobjekt erstellen, das das Ziel seiner Vorgänge darstellt.
Weitere Informationen dazu, wie Ihr Treiber Geräteobjekte erstellen kann, finden Sie unter Erstellen eines Geräteobjekts.
Geräte werden in der Regel durch mehrere Geräteobjekte dargestellt, eines für jeden Treiber im Treiberstapel, der E/A-Anforderungen für das Gerät verarbeitet. Die Geräteobjekte für ein Gerät sind in einem Gerätestapel organisiert. Wenn ein Vorgang auf einem Gerät ausgeführt wird, übergibt das System eine IRP-Datenstruktur an den Treiber für das oberste Geräteobjekt im Gerätestapel. Jeder Treiber verarbeitet entweder das IRP oder übergibt es an den Treiber, der dem nächstniedrigen Geräteobjekt im Gerätestapel zugeordnet ist. Weitere Informationen zu Gerätestapeln finden Sie unter Beispiel für WDM-Gerätestapel. Weitere Informationen zu IRPs finden Sie unter Behandeln von IRPs.
Geräteobjekte werden durch DEVICE_OBJECT-Strukturen dargestellt, die vom Objekt-Manager verwaltet werden. Der Objekt-Manager bietet die gleichen Funktionen für Geräteobjekte wie für andere Systemobjekte. Insbesondere kann ein Geräteobjekt benannt werden, und für ein benanntes Geräteobjekt können Handles geöffnet sein. Weitere Informationen zu benannten Geräteobjekten finden Sie unter Benannte Geräteobjekte.
Das System stellt dedizierten Speicher für jedes Geräteobjekt bereit, der als Geräteerweiterung bezeichnet wird, den der Treiber für gerätespezifischen Speicher verwenden kann. Die Geräteerweiterung wird zusammen mit dem Geräteobjekt vom System erstellt und freigegeben. Weitere Informationen finden Sie unter Geräteerweiterungen.
Die folgende Abbildung veranschaulicht die Beziehung zwischen Geräteobjekten und dem E/A-Manager.
Die Abbildung zeigt die Elemente der DEVICE_OBJECT-Struktur , die für einen Treiberschreiber von Interesse sind. Weitere Informationen zu diesen Membern finden Sie unter Erstellen eines Geräteobjekts, Initialisieren eines Geräteobjekts und Eigenschaften von Geräteobjekten.