Migration nach WDDM
Hinweis
XDDM- und VGA-Treiber werden unter Windows 8 und späteren Betriebssystemen nicht kompiliert. Wenn die Displayhardware an einen Windows 8-Computer ohne Treiber angeschlossen ist, der für die Unterstützung von WDDM 1.2 oder höher zertifiziert ist, wird standardmäßig der Standarddisplaytreiber ausgeführt.
Neue Treiber sollten als WDDM-Treiber geschrieben werden.
Um zum Windows Display Driver Model (WDDM) zu migrieren, müssen Treiberentwickler völlig andere Anzeige- und Videominiporttreiber schreiben. Ähnlich wie beim Windows 2000-Anzeigetreibermodell (XDDM) erfordert WDDM einen gekoppelten Anzeigetreiber und einen Miniporttreiber. Jedoch, in WDDM:
Der Displaytreiber wird im Benutzermodus ausgeführt und wird daher als Benutzermodusdisplaytreiber (UMD) bezeichnet.
Der Video-Miniporttreiber wird als Kernelmodus-Miniporttreiber (KMD) bezeichnet.
Das Modell verwendet keine Dienste des GDI-Moduls (Windows Graphics Device Interface). Stattdessen werden Dienste des Direct3D-Runtime- und DirectX-Grafik-Kernelsubsystems (Dxgkrnl.sys) verwendet.
Obwohl Treiberautoren hardwareabhängigen Code auf niedriger Ebene in ihren WDDM-Treibern wiederverwenden können, sollten sie neuen DDI-bezogenen Code (Device Driver Interface) neu schreiben. Berücksichtigen Sie beim Schreiben von WDDM-Treibern die folgenden Punkte:
Die KMD muss einen überarbeiteten Satz von Einstiegspunktfunktionen implementieren, um mit dem Betriebssystem und dem DirectX-Grafik-Kernelsubsystem (Dxgkrnl.sys) zu interagieren. Weitere Informationen finden Sie unter DriverEntry of Display Miniport Driver. Die KMD kann jede dokumentierte Kernelmodusfunktion aufrufen.
Der KMD lädt dynamisch die entsprechenden Dxgkrnl.sys. KMD und Dxgkrnl rufen einander über Schnittstellen auf.
Der KMD ist nicht mehr erforderlich, um die meisten Video-E/A-Steuerungscodes (IOCTLs) zu verarbeiten. In XDDM verwendet der Kernelmodusanzeigetreiber diese Codes, um mit dem Video-Miniporttreiber zu kommunizieren. In WDDM kommuniziert die UMD mit der Direct3D-Laufzeit. Dxgkrnl kommuniziert wiederum mit KMD.
WDDM verwendet weiterhin die folgenden IOCTLs, und die KMD muss sie verarbeiten:
Die UMD muss eine OpenAdapter-Funktion implementieren und exportieren, die eine Instanz des Grafikadapters öffnet. Die UMD muss auch eine CreateDevice-Funktion implementieren, die Darstellungen von Anzeigegeräten erstellt, die Sammlungen des Renderingzustands verarbeiten.
Die Funktion CreateResource des UMD ersetzt zusammen mit der Funktion DxgkDdiCreateAllocation des KMD die Funktionen DdCanCreateSurface, DdCreateSurface und D3dCreateSurfaceEx in XDDM.
Die meisten der verbleibenden UMD-Funktionen implementieren die gleiche Funktionalität wie der Kernelmodus XDDM-Displaytreiber, der in den folgenden Funktionen implementiert wurde:
- Die Funktion D3dDrawPrimitives2 und die Operationscodes DP2
- Die Bewegungskompensationsrückruffunktionen und DirectX Video-Beschleunigungsstrukturen