Wie wir alle wissen, muss die Treiberentwicklung ab Windows 2000 auf WDM basieren. Die Entwicklung ist jedoch sehr schwierig und wir können nicht erwarten, dass sie so einfach ist wie die Anwendungsentwicklung im Benutzermodus. Um diese Situation zu verbessern, hat Microsoft eine neue Treiberentwicklungsumgebung eingeführt. Es sollte vorab darauf hingewiesen werden, dass es sich hierbei nicht um eine Neuerfindung handelt, sondern um eine Modellierung und Kapselung auf Basis von WDM. Das wesentliche Merkmal besteht darin, dass dadurch die Schwierigkeit der Entwicklung verringert wird. Weil:
1. Wenden Sie die ursprüngliche objektbasierte Technologie der normalen Programmierung auf die Treiberentwicklung an. Obwohl es in WDM ein Objektmodell gibt, ist es überhaupt nicht dasselbe wie echte objektbasierte Technologie. Um objektbasierte Technologie zu implementieren, hat Microsoft das Objektmodell sorgfältig entworfen und gekapselt. Eigenschaften, Methoden, Ereignisse usw. „Keines davon darf fehlen“.
2. Sowohl Kernel-Modus-Treiber als auch Benutzermodus-Treiber basieren auf demselben Objektmodell und verwenden denselben Basisträger. Diese Stiftung ist WDF. Obwohl WDF bereits ein gekapseltes und definiertes Objektmodell ist, ist WDF für Kernelmodus- und Benutzermodusobjekte das übergeordnete Objekt beider. Mit anderen Worten: Beide sind von WDF geerbt oder beide sind von WDF abgeleitet. Im Verhältnis zum Kernelmodus wird das abgeleitete Objekt als „KMD-Framework“ oder KMDF bezeichnet; im Verhältnis zum Benutzermodus wird das abgeleitete Modell als „UMD-Framework“ oder UMDF bezeichnet. Unabhängig vom Modell des Frameworks werden seine internen Kapselungsmethoden und Ausführungsverhalten tatsächlich mithilfe von WDM vervollständigt.
3. Noch wichtiger und was Microsoft immer wieder vorgeführt hat, ist die Kapselung bestimmter allgemeiner Verhaltensweisen in Treibern: Zu diesem allgemeinen Verhalten gehören beispielsweise Plug-and-Play und Energieverwaltung. Da sich die meisten Treiber mit Plug-and-Play- und Energieverwaltungsproblemen befassen müssen, wird davon ausgegangen, dass hierfür etwa Tausende von Codezeilen erforderlich sind. Darüber hinaus kann es sein, dass sie ohne ein gewisses Maß an Kenntnissen nicht gut damit umgehen können. Um das Problem ein für alle Mal zu lösen, hat WDF einfach Plug-and-Play und Energieverwaltung in das Objekt gekapselt und es so auf einen Schlag zum Standardverhalten des Objekts gemacht.
4. Die Beziehung zwischen dem Betriebssystemkernel und dem Treiber wurde geändert. Im WDM-Treiber muss er sich einerseits mit der Hardware und andererseits mit der Interaktion zwischen den Treibern befassen und der Betriebssystemkernel. Jetzt trennt WDF den Treiber vom Betriebssystemkernel. Die Interaktion zwischen dem Treiber und dem Betriebssystem wird durch im Framework gekapselte Methoden (Funktionen) vervollständigt, sodass sich Treiberentwickler nur auf die Verarbeitung des Hardwareverhaltens konzentrieren müssen. Dies vermeidet nicht nur die Nachteile, die sich aus der Fokussierung auf das eine auf Kosten des anderen ergeben, sondern ist aufgrund der Trennung der beiden Parteien auch von großem Nutzen für bestimmte Änderungen im Betriebssystem und die Entwicklung unterstützender Treiber für Hardwarehersteller .
5. Beide Treibermodi (KMDF, UMDF) werden mit derselben Umgebung erstellt, die WDK genannt wird.
Das heißt, die Entwicklungsumgebung von KMDF und UMDF ist WDK.
Windows Device Kit (WDK): Durch die Integration von Testsuiten wird das DDK zum WDK. WDK ist ein treiberintegriertes Entwicklungssystem für die Microsoft-Betriebssystemserie. Es kombiniert Windows DDK und Hardware Compatibility Test (HCT)-Kits (Hardware-Kompatibilitätstest-Tools) und stellt außerdem die interne Testsuite von Microsoft zum Testen der Stabilität und Zuverlässigkeit von Windows-Betriebssystemen bereit.
6. Obwohl es gekapselt ist und objektbasierte Technologie eingeführt wird, ist die Ausführungseffizienz des entwickelten Treibers nicht schlechter als die des Originals.
Dieser Artikel stammt aus dem CSDN-Blog. Bitte geben Sie beim Nachdruck die Quelle an: http://blog.csdn.net/ding_3/archive/2009/12/23/5060907.aspx
-