Übersicht über Geräteschnittstellenklassen
Jeder Treiber eines physischen, logischen oder virtuellen Geräts, an das Benutzermoduscode E/A-Anforderungen weiterleiten kann, muss einen Namen für seine Benutzermodusclients angeben. Mithilfe des Namens identifiziert eine Anwendung im Benutzermodus (oder eine andere Systemkomponente) das Gerät, von dem E/A angefordert wird.
In Windows NT 4.0 und früheren Versionen des NT-basierten Betriebssystems benannten Treiber ihre Geräteobjekte und richten 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 werden Geräteschnittstellen verwendet, die nach Geräteschnittstellenklassen gruppiert sind. Eine Geräteschnittstellenklasse ist eine Möglichkeit zum Exportieren von Geräte- und Treiberfunktionen in andere Systemkomponenten, einschließlich anderer Treiber, sowie Benutzermodusanwendungen. Ein Treiber kann eine Geräteschnittstelle instance der Geräteschnittstellenklasse für jedes Geräteobjekt registrieren und aktivieren, an das E/A-Anforderungen im Benutzermodus 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 gängige 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, auch wenn eine Verbindung über einen USB-Port, eine zweite über einen seriellen Port und der dritte über einen Infrarotanschluss hergestellt wird. 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, für so viele Geräteschnittstellenklassen registrieren und aktivieren, für die 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 seine Datenträgerschnittstellenklasse (GUID_DEVINTERFACE_DISK) als auch für die eingebundene Geräteklasse (MOUNTDEV_MOUNTED_DEVICE_GUID) registriert werden.
Wenn ein Treiber eine Geräteschnittstelle instance einer Geräteschnittstellenklasse registriert, ordnet der E/A-Manager dem Gerät und der Geräteschnittstellenklasse GUID einen symbolischen Linknamen zu. Der Treiber muss die Geräteschnittstelleaktivieren, damit dieser symbolische Link für einen Treiber oder eine Anwendung zum Senden von E/A verwendet werden kann. Die Registrierung des Linknamens bleibt systemübergreifend bestehen, aber die Geräteschnittstelle muss vom Treiber für jede 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 Linknamen erhalten, die Geräte darstellen, die die Schnittstelle unterstützen. Die Anwendung kann dann den symbolischen Linknamen 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 routinebasierte Einstiegspunkte zwischen Kernelmodustreibern zu übergeben.