Übersicht über Geräteschnittstellenklassen

Jeder Treiber eines physischen, logischen oder virtuellen Geräts, an das Benutzermoduscode E/A-Anforderungen weiterleiten kann, muss für seine Benutzermodusclients einen Namen bereitstellen. Mithilfe des Namens identifiziert eine Anwendung im Benutzermodus (oder eine andere Systemkomponente) das Gerät, von dem sie E/A anfordert.

In Windows NT 4.0 und früheren Versionen des NT-basierten Betriebssystems benannten Treiber ihre Geräteobjekte und richteten dann symbolische Verknüpfungen in der Registrierung zwischen diesen Namen und einem vom Benutzer sichtbaren logischen Win32-Namen ein.

Ab Windows 2000 benennen Treiber keine Geräteobjekte. Stattdessen verwenden sie Geräteschnittstellen , die nach Geräteschnittstellenklassen gruppiert sind. Eine Geräteschnittstellenklasse ist eine Möglichkeit zum Exportieren von Geräte- und Treiberfunktionen für andere Systemkomponenten, einschließlich anderer Treiber sowie Benutzermodusanwendungen. Ein Treiber kann eine Geräteschnittstelleninstanz der Geräteschnittstellenklasse für jedes Geräteobjekt registrieren und aktivieren, an das Benutzermodus-E/A-Anforderungen gesendet werden können. Jede Geräteschnittstellenklasse sollte eine konzeptionelle Funktionalität darstellen, die jede Geräteschnittstelle in dieser Klasse unterstützen oder darstellen sollte, z. B. einen bestimmten E/A-Vertrag.

Jede Geräteschnittstellenklasse ist einer GUID zugeordnet. Das System definiert GUIDs für allgemeine Geräteschnittstellenklassen in gerätespezifischen Headerdateien. Anbieter können zusätzliche Geräteschnittstellenklassen erstellen.

Beispielsweise könnten drei verschiedene Arten von Mausgeräten Geräteschnittstellen registrieren, die Mitglieder derselben Geräteschnittstellenklasse sind, selbst wenn eines über einen USB-Anschluss, ein zweites über einen seriellen Anschluss und ein drittes über einen Infrarotanschluss angeschlossen ist. Jeder Treiber registriert sein Gerät als Mitglied der Schnittstellenklasse GUID_DEVINTERFACE_MOUSE. Diese GUID wird in der Headerdatei Ntddmou.h definiert.

Treiber können Geräteschnittstellen für ein Gerät, das sie steuern, registrieren und aktivieren, und zwar für so viele Geräteschnittstellenklassen, wie das Gerät und der Treiber die Funktionalität unterstützen. Beispielsweise sollte ein Treiber für einen Datenträger, der eingebunden werden kann, sowohl für die Datenträgerschnittstellenklasse (GUID_DEVINTERFACE_DISK) als auch für die einbindbare Geräteklasse (MOUNTDEV_MOUNTED_DEVICE_GUID) registriert werden.

Wenn ein Treiber eine Geräteschnittstelleninstanz einer Geräteschnittstellenklasse registriert, ordnet der E/A-Manager das Gerät und die GUID der Geräteschnittstellenklasse einem symbolischen Linknamen zu. Der Treiber muss die Geräteschnittstelleaktivieren, damit diese symbolische Verknüpfung für einen Treiber oder eine Anwendung zum Senden von E/A verwendet werden kann. Die Registrierung des Verknüpfungsnamens bleibt beim Start des Systems bestehen, die Geräteschnittstelle muss jedoch vom Treiber auf jeder Enumeration des Geräts aktiviert werden. Eine Anwendung, die eine bestimmte Geräteschnittstellenklasse verwendet, kann Instanzen der Geräteschnittstellen in dieser Klasse abfragen und eine Liste symbolischer Verknüpfungsnamen empfangen, die Geräte darstellen, die die Schnittstelle unterstützen. Die Anwendung kann dann den symbolischen Verknüpfungsnamen als Ziel für E/A-Anforderungen verwenden.

Verwechseln Sie geräteschnittstellen nicht mit den Schnittstellen, die Treiber als Reaktion auf eine IRP_MN_QUERY_INTERFACE Anforderung exportieren können. Diese IRP wird verwendet, um Routine-Einstiegspunkte zwischen Kernelmodustreibern zu übergeben.