Initialisieren der Kommunikation mit dem Direct3D-User-Mode-Anzeigetreiber
Um die Kommunikation mit der Microsoft Direct3D-Anzeigetreiber-DLL der Version 11 DDI zu initialisieren, lädt die Direct3D-Runtime zuerst die DLL. Die Direct3D-Runtime ruft als Nächstes die OpenAdapter-Funktion des Benutzermodustreibers über die Exporttabelle der DLL auf, um eine instance des Grafikkarten zu öffnen. Die OpenAdapter-Funktion ist die einzige exportierte Funktion der DLL.
Beim Aufruf der OpenAdapter-Funktion des Treibers stellt die Runtime die PfnQueryAdapterInfoCb-Adapterrückruffunktion im pAdapterCallbacks-Member der D3DDDIARG_OPENADAPTER-Struktur bereit. Die Runtime stellt auch ihre Version in den Membern Interface und Version von D3DDDIARG_OPENADAPTER bereit. Der Benutzermodusanzeigetreiber muss überprüfen, ob er diese Version der Runtime verwenden kann. Der Benutzermodusanzeigetreiber gibt eine Tabelle seiner adapterspezifischen Funktionen im pAdapterFuncs-Member von D3DDDIARG_OPENADAPTER zurück.
Der Benutzermodusanzeigetreiber sollte die Rückruffunktion des pfnQueryAdapterInfoCb-Adapters aufrufen, um die Grafikhardwarefunktionen des Anzeigeminiporttreibers abzufragen.
Die Runtime ruft die CreateDevice-Funktion des Benutzermodusanzeigetreibers (eine der adapterspezifischen Funktionen des Treibers) auf, um ein Anzeigegerät für die Verarbeitung einer Auflistung des Renderzustands zu erstellen und die Initialisierung abzuschließen. Wenn die Initialisierung abgeschlossen ist, kann die Direct3D-Runtime die vom Anzeigetreiber bereitgestellten Funktionen aufrufen, und der Benutzermodusanzeigetreiber kann die von der Laufzeit bereitgestellten Funktionen aufrufen.
Die CreateDevice-Funktion des Benutzermodusanzeigetreibers wird mit einer D3DDDIARG_CREATEDEVICE-Struktur aufgerufen, deren Member wie folgt eingerichtet sind, um die Benutzermodusanzeigetreiberschnittstelle zu initialisieren:
Die Runtime legt Interface auf die Version der Schnittstelle fest, die die Runtime vom Benutzermodusanzeigetreiber benötigt.
Die Runtime legt Version auf eine Zahl fest, die der Treiber verwenden kann, um zu identifizieren, wann die Runtime erstellt wurde. Beispielsweise kann der Treiber die Versionsnummer verwenden, um zwischen einer Laufzeit, die mit Windows Vista veröffentlicht wurde, und einer Laufzeit zu unterscheiden, die mit einem nachfolgenden Service Pack veröffentlicht wurde, das möglicherweise einen Vom Treiber benötigten Fix enthalten kann.
Die Runtime legt hDevice fest, um das Handle anzugeben, das der Treiber verwenden soll, wenn der Treiber die Runtime zurückruft. Der Treiber generiert ein eindeutiges Handle und übergibt es zurück an die Runtime in hDevice. Die Runtime sollte das zurückgegebene hDevice-Handle in nachfolgenden Treiberaufrufen verwenden.
Die Runtime stellt eine Tabelle ihrer gerätespezifischen Rückruffunktionen in der D3DDDI_DEVICECALLBACKS-Struktur bereit, auf die pCallbacks verweist. Der Benutzermodusanzeigetreiber ruft die von der Laufzeit bereitgestellten Rückruffunktionen auf, um auf Kernelmodusdienste im Anzeigeminiporttreiber zuzugreifen.
Der Benutzermodusanzeigetreiber gibt eine Tabelle seiner gerätespezifischen Funktionen in der D3DDDI_DEVICEFUNCS Struktur zurück, auf die pDeviceFuncs verweist.
Hinweis
Die Anzahl der Anzeigegeräte (Grafikkontexte), die gleichzeitig vorhanden sein können, ist nur durch den verfügbaren Systemspeicher begrenzt.