Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Das Verständnis der Unterscheidung zwischen Geräteeinrichtungsklassen und Geräteschnittstellenklassen ist für eine erfolgreiche Windows-Treiberentwicklung und Geräteverwaltung von entscheidender Bedeutung. Obwohl diese Klassen möglicherweise ähnlich erscheinen, dienen sie grundsätzlich unterschiedlichen Zwecken im Windows-Geräteökosystem. Setupklassen steuern, wie das Betriebssystem Geräte installiert und konfiguriert. Schnittstellenklassen ermöglichen die Laufzeitkommunikation und -funktionalität zwischen Treibern, Anwendungen und Geräten. Wenn Sie diese Unterscheidung verstehen, können Sie den richtigen Klassentyp für die Geräteinstallation auswählen, geeignete Gerätebenachrichtigungen implementieren und häufige Fallstricke bei der Entwicklung vermeiden.
Ein Gerät gehört häufig zu einer Setupklasse und macht mehrere Geräteschnittstellen in verschiedenen Schnittstellenklassen gleichzeitig verfügbar. Dennoch dienen die beiden Klassentypen unterschiedlichen Zwecken und sind nicht austauschbar.
Vergleich
In der folgenden Tabelle sind die wichtigsten Unterschiede und Beziehungen zwischen Setupklassen und Schnittstellenklassen zusammengefasst:
| Aspekt | Klassen einrichten | Schnittstellenklassen |
|---|---|---|
| Hauptzweck | Gruppieren von Geräten mit ähnlicher Installation und Konfiguration | Gruppierung von Geräteschnittstellen, die ähnliche Funktionen und Kommunikation bieten |
| Verwendung | Wird von Windows während der Geräteinstallation verwendet | Wird von Treiber und Anwendungen für die Geräteinteraktion verwendet |
| GUID-Definitionen | In der Regel in Devguid.h definiert | Definiert in gerätespezifischen Headerdateien (z. B. Ntddmou.h, Ntddpar.h) |
| Gruppierungskriterien | Ähnlich installierte und konfigurierte Geräte | Geräteschnittstellen, die einen bestimmten E/A-Kontrakt implementieren |
| Benachrichtigung | Nicht für Geräteein- oder Entfernungsbenachrichtigungen verwendet | Wird für die Registrierung von Benachrichtigungen über das Anschließen und Entfernen von Geräteschnittstellen verwendet |
| Examples | Sensoren, Firmware, Bluetooth | Audioaufnahme, Audiowiedergabe, Umgebungslichtsensor |
| Beziehung | Ein Gerät gehört zu einer Setupklasse. | Ein Gerät kann null oder mehr Geräteschnittstellen in verschiedenen Schnittstellenklassen verfügbar machen. |
| Lebensdauer | Während des Installationsprozesses relevant | Relevant während des Gerätebetriebs |
Es ist wichtig, zwischen den beiden Geräteklassen zu unterscheiden: Geräteschnittstellenklassen und Geräteeinrichtungsklassen. Die beiden können leicht verwechselt werden. Im Benutzermoduscode verwenden beide Klassen denselben Satz von Geräteinstallationsfunktionen. Sie verwenden auch denselben Satz von Datenstrukturen (Geräteinformationssätze).
Gleiche Setupklasse, verschiedene Schnittstellenklassen:
- Geräte: Zwei unterschiedliche Sensorgeräte
- Einrichtungsklasse: Beide Geräte befinden sich in der Sensorenklasse.
- Schnittstellenklassen: Ein Sensor stellt eine Geräteschnittstelle für einen Umgebungslichtsensor bereit, und der andere stellt eine Geräteschnittstelle für einen Beschleunigungsmesser bereit.
Betrachten Sie ein USB-Mausgerät und ein USB-Tastaturgerät. Beide verwenden dieselbe Schnittstellenklasse (Human Interface Device). Sie gehören jedoch zu verschiedenen Setupklassen, Maus und Tastatur.
Gleiche Schnittstellenklasse, verschiedene Setupklassen:
- Geräte: Eine USB-Maus und eine USB-Tastatur
- Schnittstellenklasse: Beide Geräte verwenden dieselbe Schnittstellenklasse (Human Interface Device), um mit dem System zu kommunizieren.
- Setupklassen: Das Mausgerät gehört zur Mouse-Setupklasse, während das Tastaturgerät zur Keyboard-Setupklasse gehört.
Geräteeinrichtungsklassen
Gerätesetupklassen sind vordefinierte Kategorien, die ausschließlich für die Installation und Konfiguration von Geräten in Windows verwendet werden. Sie helfen dem Betriebssystem zu verstehen, wie es das Gerät während des Installationsprozesses verwalten soll. Setupklassen bieten einen Mechanismus zum Gruppieren von Geräten, die auf die gleiche Weise installiert und konfiguriert sind. Weitere Informationen zu Setupklassen finden Sie unter Systemdefinierte Gerätesetupklassen, die für Anbieter verfügbar sind.
Windows-Gerätesetupklassen werden in der Systemdatei Devguid.h definiert. Diese Datei definiert eine Reihe von GUIDs für Setupklassen. Die in Devguid.h dargestellten Gerätesetupklassen dürfen jedoch nicht mit Device-Interface-Klassen verwechselt werden. Die Datei Devguid.h enthält nur GUIDs für Setupklassen.
Geräteschnittstellenklassen
Geräteschnittstellenklassen bieten einen Mechanismus zum Gruppieren von Geräteschnittstellen gemäß gemeinsamen Merkmalen oder Funktionen. Treiber und Benutzeranwendungen können sich für Benachrichtigungen über Geräteschnittstellen in einer bestimmten Schnittstellenklasse registrieren. Dies bedeutet, dass sie benachrichtigt werden, wenn eine beliebige Geräteschnittstelle, die zu dieser Klasse gehört, aktiviert (eintreffen) oder deaktiviert (entfernt) wird. Sie müssen keine einzelnen Geräte nachverfolgen. Geräteschnittstellenklassen gruppieren Geräteschnittstellen, die von Geräten verfügbar gemacht werden. Sie registrieren sich für Benachrichtigungen über das Hinzufügen und Entfernen von Geräteschnittstellen.
Definitionen von Schnittstellenklassen werden in einer einzelnen Datei nicht bereitgestellt. Eine Geräteschnittstellenklasse wird immer in einer Headerdatei definiert, die ausschließlich zu einer bestimmten Geräteklasse gehört. Ntddmou.h enthält beispielsweise die Definition von GUID_DEVINTERFACE_MOUSE, der GUID, die die Mausschnittstellenklasse darstellt. Ntddpar.h definiert die GuiD der Schnittstellenklasse für parallele Geräte. Ntddpcm.h definiert die Standard-GUID der Schnittstellenklasse für PCMCIA-Geräte. Ntddstor.h definiert die Schnittstellenklassen-GUID für Speichergeräte.
Verwenden Sie zum Registrieren für Geräteschnittstellenbenachrichtigungen die GUIDs in den Headerdateien, die für die Geräteschnittstellenklasse spezifisch sind. Diese GUIDs ermöglichen es Ihnen, benachrichtigt zu werden, wenn eine Geräteschnittstelleninstanz erkannt wird. Wenn sich ein Treiber für die Benachrichtigung mithilfe einer GUID einer Setupklasse anstelle einer GUID der Schnittstellenklasse registriert, wird er nicht benachrichtigt, wenn eine Schnittstelle verfügbar wird.
Verwenden Sie beim Definieren einer neuen Schnittstellenklasse keine einzelne GUID, um sowohl eine Setupklasse als auch eine Schnittstellenklasse zu identifizieren.