2013-05-15 27 views
5

Beim Erstellen eines Windows-Treiberprojekts in Visual Studio 2012 haben Sie viele verschiedene Optionen zur Auswahl.Was ist der Unterschied zwischen einem WDM-Treiber, einem KMDF-Treiber und einem UMDF-Treiber?

Es gibt eine page on MSDN, die Ihnen bei der Auswahl des richtigen Treibermodells für Ihr Gerät hilft. Es erklärt jedoch nicht genau die genauen Unterschiede zwischen den WDM-, KMDF- und UMDF-Treibertypen und wann das Modell auszuwählen ist.

Ich bin auf der Suche nach einer Erklärung zu den Unterschieden zwischen den WDM, KMDF und UMDF-Treibermodellen, so dass es für beginnende Windows-Treiber-Entwickler leicht ist, das richtige Modell zu wählen.

Antwort

10

Auf den Punkt gebracht:

  • WDM steht für Windows Driver Model. Jeder Kernel-Treiber ist im Wesentlichen ein WDM-Treiber.
  • KMDF steht für Kernel Mode Driver Framework. Dies ist ein Framework, das viele Aspekte der Betriebssystemprogrammierung kapselt und verbirgt, auf die sich der Treiberentwickler beziehen muss, selbst wenn es nichts mit der Geschäftslogik seines Treibers zu tun hat. Einige Funktionen sind im KMDF-Framework nicht vorhanden und erfordern native Kernel-Aufrufe, ohne das Framework zu verwenden (aber in den meisten Fällen ist dies nicht der Fall).
  • UMDF steht für User Mode Driver Framework. Es ist ein komplementärer Rahmen zu KMDF und zusammen umfassen sie WDF (Windows Driver Frameworks). UMDF ermöglicht das Erstellen eines Treibers im Benutzermodus mit allen Vorteilen der Programmierung im Benutzermodus gegenüber dem Kernel-Modus. Natürlich hat der UMDF-Treiber Einschränkungen im Vergleich zu KMDF/WDM-Treibern und in den meisten Situationen wird ein Kernel-Gegenstück mit zumindest einiger Funktionalität benötigt.

Die von Ihnen referenzierte Seite ist ziemlich umfassend. Sie sollten sich darauf vertiefen, um tiefer zu verstehen.

+1

Danke für die Erklärung, aber eine Sache ist mir noch nicht ganz klar. Sie sagen, dass jeder Kernel-Treiber ein WDM-Treiber ist, aber sind alle WDM-Treiber Kernel-Treiber? Warum sind WDM und KMDF zwei verschiedene Vorlagen in VS2012? – lesderid

+3

@lesderid denke an es in Bezug auf Win32 und MFC (ich hoffe, Sie sind vertraut mit beiden). Während jedes MFC-Programm ein Win32-Programm ist, ist nicht jedes Win32-Programm ein MFC-Programm. Die KMDF ist ähnlich wie MFC: ein Framework, das verwendet werden kann, um einen Teil der Komplexität von WDM zu verbergen.Die Templates unterscheiden sich also dadurch, dass das, was sie erzeugen, anders ist: Das eine erzeugt ein Projekt, das andere generiert ein anderes Projekt. Um Ihre andere Frage zu beantworten, sind alle modernen * Kernel * -Treiber WDM-Treiber; Obwohl es andere "Legacy" -Kerneltreibermodelle gibt, werden sie nicht offiziell unterstützt und sollten nicht mehr verwendet werden. –

5

Ich mag Aufsatz findet aus MSDN: Differences Between WDM and KMDF

  • WDM ist das Treibermodell, da pnp-Gerätetreiber (> = Win2k). In diesem Modell müssen Sie Funktionen behandeln, die für Ihre Funktionalität nicht relevant sind. Walter Oney (Programmieren des Microsoft Windows Driver Model) hat solche Funktionen zur Wiederverwendung an externe Gerätetreiberbibliotheken ausgelagert.

  • WDF/kmdf versucht, die Entwicklung von Gerätetreibern zu vereinfachen. Funktionen können überschrieben werden oder der Standard-Handler wird verwendet. Die Verwaltung von Speicher und Warteschlangen wurde stark vereinfacht und gesichert.

  • UMDF hat versucht, ähnliche Funktionsaufrufe im Benutzermodus als Funktionsaufrufe im Kernelmodus zu verwenden.

Hoffentlich nicht zu spät. Fragedatum zuerst gesehen, als ich mit dem Schreiben fertig war!

+1

KMDF + UMDF = WDF – SomeWittyUsername