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: