Vergleich von Setupklassen und Schnittstellenklassen

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.

Diagramm, das die Beziehung zwischen einem Gerät, seiner Setupklasse und den verschiedenen Schnittstellenklassen zeigt.

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.