Freigeben über


Unterstützung von GetDriverInfo2

DirectX 8.0 DDI führt einen neuen Mechanismus zum Abfragen des Treibers nach Informationen ein. Dieser Mechanismus erweitert den vorhandenen DdGetDriverInfo-Einstiegspunkt , um zusätzliche Informationen vom Treiber abzufragen. Derzeit wird dieser Mechanismus nur zum Abfragen von D3D-Caps im DX8-Stil verwendet.

Hinweis Wenn Sie folgendes lesen, können Sie sich fragen, warum der GetDriverInfo2-Mechanismus erforderlich ist. Es scheint vorzuziehen, einfach eine neue GetDriverInfo-GUID zu definieren, die der Treiber verarbeiten würde, indem eine D3DCAP8-Struktur zurückgegeben wird. GetDriverInfo2, das in den folgenden Absätzen eingeführt wurde, ist ein Mechanismus, um die Änderungen zu minimieren, die an den Windows-Betriebssystemen erforderlich sind, um die Funktionalität auf DirectX 8.0-Ebene zu aktivieren und somit die Weiterverteilung der DirectX 8.0-Runtime praktisch zu machen.

Diese Erweiterung für GetDriverInfo hat die Form eines DdGetDriverInfo-Aufrufs mit GUID_GetDriverInfo2. Wenn ein DdGetDriverInfo-Aufruf mit dieser GUID vom Treiber empfangen wird, muss er die im Feld lpvData der DD_GETDRIVERINFODATA Datenstruktur übergebene Datenstruktur untersuchen, um zu ermitteln, welche Informationen angefordert werden. Wie unten beschrieben, kann lpvData entweder auf eine DD_GETDRIVERINFO2DATA - oder DD_STEREOMODE-Struktur verweisen.

Der GUID_GetDriverInfo2 ist der gleiche GUID-Wert wie GUID_DDStereoMode. Wenn Ihr Treiber GUID_DDStereoMode nicht verarbeitet, ist dies kein Problem. Wenn Ihr DirectX 8.0-Treiber jedoch GUID_DDStereoMode verarbeitet, beachten Sie, dass bei einem Aufruf von DdGetDriverInfo mit dem GUID_GetDriverInfo2(GUID_DDStereoMode) die Laufzeit das DwHeight-Feld der DD_STEREOMODE-Struktur auf den besonderen Wert D3DGDI2_MAGIC festlegt. Dieses Feld entspricht dem DwMagic-Feld der DD_GETDRIVERINFO2DATA-Struktur. Wenn Sie den lpvData-Zeiger also entweder auf einen Zeiger auf eine DD_STEREOMODE-Struktur oder einen Zeiger auf eine DD_GETDRIVERINFO2DATA-Struktur umwandeln und den Wert des entsprechenden Felds (dwHeight oder dwMagic) für den Wert D3DGDI2_MAGIC überprüfen, können Sie zwischen einem Aufruf zum Bestimmen von Stereomodusfunktionen oder einer Anforderung von Direct3D 8.0-Funktionen unterscheiden.

Sobald der Treiber festgestellt hat, dass es sich um einen Aufruf von GetDriverInfo2 handelt, muss er den Typ der von der Runtime angeforderten Informationen bestimmen. Dieser Typ ist im DwType-Feld der DD_GETDRIVERINFO2DATA Datenstruktur enthalten.

Schließlich kopiert der Treiber die angeforderten Daten in den bereitgestellten Puffer. Beachten Sie, dass das Feld lpvData der DD_GETDRIVERINFODATA Datenstruktur auf den Puffer verweist, in den die angeforderten Daten kopiert werden sollen. lpvData verweist auch auf die DD_GETDRIVERINFO2DATA-Struktur. Dies bedeutet, dass die vom Treiber zurückgegebenen Daten die DD_GETDRIVERINFO2DATA-Struktur überschreiben (und daher die DD_GETDRIVERINFO2DATA-Struktur die ersten DWORDs des Puffers belegt).

Um mit GetDriverInfo2 aufgerufen zu werden und DirectX 8.0-Funktionen zu melden, muss der Treiber das neue Flag DDHALINFO_GETDRIVERINFO2 im Feld dwFlags der vom Treiber zurückgegebenen DD_HALINFO Struktur festlegen. Wenn dieses Flag nicht festgelegt ist, sendet die Runtime keine GetDriverInfo2-Aufrufe an den Treiber, und der Treiber wird nicht als DirectX 8.0-Leveltreiber erkannt.

Die Runtime verwendet GetDriverInfo2 mit dem Typ D3DGDI2_TYPE_DXVERSION, um den Treiber über die aktuelle DX-Runtimeversion zu benachrichtigen, die von der Anwendung verwendet wird. Die Runtime stellt einen Zeiger auf eine DD_DXVERSION Struktur im Feld lpvData von DD_GETDRIVERINFODATA bereit.