Erste Schritte mit UMDF

In diesem Abschnitt wird User-Mode Driver Framework (UMDF) beschrieben und die Unterschiede zwischen den UMDF-Versionen 1 und 2 erläutert. Außerdem werden allgemeine Architekturinformationen zu UMDF bereitgestellt. Verwenden Sie diesen Abschnitt, um festzustellen, ob ein UMDF-Treiber die richtige Wahl für Ihre Anforderungen ist, und um zu entscheiden, welche UMDF-Version verwendet werden soll.

Windows Driver Frameworks (WDF) enthält UMDF, ein Framework zum Erstellen von Benutzermodustreibern. Wie Kernel-Mode Driver Framework (KMDF) bietet UMDF eine Abstraktionsebene von WDM, die einen Großteil der Plug & Play (PnP) und Energieverwaltungsfunktionen verarbeitet und dem Treiber ermöglicht, sich für bestimmte Funktionen und die Ereignisbehandlung zu entscheiden.

Ab Windows 8.1 gibt es zwei Hauptversionen von UMDF, Versionen 1 und 2. UMDF-Version 1.11 (ein Punkt elf) ist die neueste Version von UMDF-Version 1 und die letzte Version vor dem Aufkommen von UMDF 2. Eine Tabelle mit vollständigen Versionsinformationen und Betriebssystemrelevanz finden Sie unter UMDF-Versionsverlauf.

Für das Schreiben eines Treibers mit UMDF-Version 1 ist die Verwendung des COM-Programmiermodells erforderlich, um C++-Code zu schreiben. Während UMDF Version 2 auf demselben konzeptionellen Treiberprogrammierungsmodell wie KMDF basiert, implementiert UMDF 1 das Modell mit verschiedenen Komponenten, Gerätetreiberschnittstellen (Device Driver Interfaces, DDIs) und Datenstrukturen. Alle neuen UMDF-Treiber sollten mit UMDF 2 geschrieben werden. UMDF 1 werden keine neuen Features hinzugefügt, und es gibt nur eingeschränkte Unterstützung für UMDF 1 für neuere Versionen von Windows 10 und Windows 11.

Im Gegensatz dazu können Sie ab UMDF-Version 2 einen UMDF-Treiber in der Programmiersprache C schreiben, der viele der Methoden aufruft, die für KMDF-Treiber verfügbar sind. Alle Schnittstellen, die zwischen UMDF Version 2 und KMDF gemeinsam genutzt werden, weisen dieselben Namen, Parameter und Strukturdefinitionen auf. Wenn Ihr Treiber nur freigegebene Funktionen verwendet oder bedingte Makros um Aufrufe herum verwendet, die nur in einem Framework unterstützt werden, können Sie einen einzelnen Treiber schreiben, den Sie entweder mit UMDF oder KMDF kompilieren können. Weitere Informationen finden Sie unter Generieren eines UMDF-Treibers aus einem KMDF-Treiber.

Obwohl es erhebliche Gemeinsamkeiten zwischen UMDF 2 und KMDF gibt, gibt es immer noch eine kleine Menge an Funktionalität, die nur in einem oder dem anderen Framework verfügbar ist. Einzelheiten finden Sie unter Vergleich der UMDF 2-Funktionalität mit KMDF. Eine Liste aller UMDF 2- und KMDF-Rückrufe und -Methoden sowie deren Frameworks finden Sie unter Zusammenfassung der WDF-Rückrufe und -Methoden. In einigen Fällen gilt ein Strukturmember oder -parameter einer Methode nur für das eine oder das andere Framework. In der Dokumentation werden diese Unterschiede auf den entsprechenden Referenzseiten beschrieben.