Freigeben über


DD_GETDRIVERINFO2DATA-Struktur (d3dhal.h)

Nur DirectX 8.0 und höhere Versionen.

DD_GETDRIVERINFO2DATA wird im lpvData-Element der DD_GETDRIVERINFODATA-Struktur übergeben, wenn GUID_GetDriverInfo2 im guidInfo-Member von DD_GETDRIVERINFODATA in einem DdGetDriverInfo-Aufruf angegeben wird.

Syntax

typedef struct _DD_GETDRIVERINFO2DATA {
  DWORD dwReserved;
  DWORD dwMagic;
  DWORD dwType;
  DWORD dwExpectedSize;
} DD_GETDRIVERINFO2DATA;

Member

dwReserved

Gibt ein reserviertes Feld an. Der Treiber darf nicht lesen oder schreiben.

dwMagic

Gibt die magische Zahl an. Hat den Wert D3DGDI2_MAGIC, wenn dies ein GetDriverInfo2-Aufruf ist. Andernfalls ist diese Struktur tatsächlich ein DD_STEREOMODE Aufruf.

dwType

Gibt den Typ der angeforderten Informationen an, der einen der folgenden D3DGDI2_TYPE_Xxx-Werte enthalten kann. Der Treiber sollte diesen Member nur lesen (nicht schreiben).

Wert Bedeutung
D3DGDI2_TYPE_DEFER_AGP_FREES Nur NT-basierte Betriebssysteme.
Wird verwendet, um den Treiber zu benachrichtigen, dass er die Zerstörung des AGP-Speichers für Oberflächen ordnungsgemäß behandeln soll. Die Runtime stellt einen Zeiger auf eine DD_FREE_DEFERRED_AGP_DATA-Struktur im Feld lpvData der DD_GETDRIVERINFODATA-Datenstruktur bereit.
Der Treiber erhält diese Benachrichtigung manchmal, bevor eine Änderung des Anzeigemodus auftritt. Die Runtime sendet diese Benachrichtigung nur, wenn sie zum Ändern des Anzeigemodus verwendet werden soll. Treiber sollten die Prozess-ID (PID) des Prozesses überprüfen, der die Oberfläche zerstört, gegenüber dem Prozess, der die Oberfläche erstellt hat. Wenn die PIDs unterschiedlich sind, sollte der Treiber die Benutzermoduszuordnungen des AGP-Arbeitsspeichers wahrscheinlich nicht zerstören, da eine Anwendung den Arbeitsspeicher möglicherweise noch verwendet.
D3DGDI2_TYPE_DEFERRED_AGP_AWARE Nur NT-basierte Betriebssysteme.
Wird verwendet, um den Treiber darüber zu informieren, dass die Runtime D3DGDI2_TYPE_FREE_DEFERRED_AGP und D3DGDI2_TYPE_DEFER_AGP_FREES Benachrichtigungen zum geeigneten Zeitpunkt sendet (z. B. nachdem die letzte ausstehende AGP-Speichersperre aufgehoben wurde). Die Runtime stellt einen Zeiger auf eine DD_DEFERRED_AGP_AWARE_DATA-Struktur im Feld lpvData der DD_GETDRIVERINFODATA-Datenstruktur bereit.
D3DGDI2_TYPE_DXVERSION Wird verwendet, 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 lpvData-Feld der DD_GETDRIVERINFODATA-Datenstruktur bereit.
D3DGDI2_TYPE_FREE_DEFERRED_AGP Nur NT-basierte Betriebssysteme.
Wird verwendet, um den Treiber zu benachrichtigen, dass es jetzt sicher ist, alle Benutzermoduszuordnungen des AGP-Speichers zu zerstören. Der Treiber hat diese Benutzermoduszuordnungen beibehalten, wenn Oberflächen zerstört wurden, und er erhielt eine D3DGDI2_TYPE_DEFER_AGP_FREES Benachrichtigung. Die Runtime stellt einen Zeiger auf eine DD_FREE_DEFERRED_AGP_DATA-Struktur im Feld lpvData der DD_GETDRIVERINFODATA-Datenstruktur bereit.
Der Treiber erhält diese Benachrichtigung, wenn alle Anzeigegeräte innerhalb des Prozesses die Verwendung von Oberflächen, Texturen, Vertexpuffern und Indexpuffern beenden, die zum Zeitpunkt der Änderung des Anzeigemodus gesperrt waren.
D3DGDI2_TYPE_GETADAPTERGROUP Nur DirectX 9.0 und höhere Versionen.
Wird verwendet, um den Treiber nach der Identität der Gruppe von Adaptern abzufragen, die Teil der Mehrkopfvideo-Karte sind. Diese Gruppe verwendet Videohardware wie Videospeicher und 3D-Beschleuniger. Der Treiber sollte die Datenstruktur, auf die das lpvData-Feld der DD_GETDRIVERINFODATA Datenstruktur verweist, auf DD_GETADAPTERGROUPDATA festlegen.
D3DGDI2_TYPE_GETD3DCAPS8 Dieser Typ gibt an, dass die Runtime anfordert, eine D3DCAPS8 Struktur zu erhalten, die den DirectX 8.0-Stilfunktionen des Geräts bereitstellt. Der Treiber sollte eine initialisierte D3DCAPS8-Struktur in das lpvData-Feld der DD_GETDRIVERINFODATA-Struktur kopieren.
D3DGDI2_TYPE_GETD3DCAPS9 Nur für DirectX 9.0 und höhere Versionen erforderlich.
Dieser Typ gibt an, dass die Runtime anfordert, eine D3DCAPS9-Struktur zu erhalten, die die DirectX 9.0-Stilfunktionen des Geräts bereitstellt. Der Treiber sollte eine initialisierte D3DCAPS9-Struktur in das lpvData-Feld der DD_GETDRIVERINFODATA-Struktur kopieren.
D3DGDI2_TYPE_GETD3DQUERY Nur DirectX 9.0 und höhere Versionen.
Wird verwendet, um den Treiber nach Informationen zu einem bestimmten Abfragetyp abzufragen, den er unterstützt. Der Treiber sollte die Datenstruktur, auf die das FeldlpvData der DD_GETDRIVERINFODATA Datenstruktur verweist, auf DD_GETD3DQUERYDATA festlegen.
D3DGDI2_TYPE_GETD3DQUERYCOUNT Nur DirectX 9.0 und höhere Versionen.
Wird verwendet, um den Treiber nach der Anzahl der unterstützten Abfragetypen abzufragen. Der Treiber sollte die Datenstruktur festlegen, auf die das Feld lpvData der DD_GETDRIVERINFODATA Datenstruktur verweist, auf DD_GETD3DQUERYCOUNTDATA.
D3DGDI2_TYPE_GETDDIVERSION Nur DirectX 9.0 und höhere Versionen.
Wird verwendet, um den Treiber für die Version der DDI abzufragen, die vom Treiber unterstützt wird. Diese DDI-Version wiederum hängt von der DirectX-Version ab, die diese Anforderung stellt. Der Treiber sollte den dwDDIVersion-Member der DD_GETDDIVERSIONDATA-Struktur , auf den das lpvData-Feld der DD_GETDRIVERINFODATA Datenstruktur verweist, auf die entsprechende DDI-Version festlegen.
D3DGDI2_TYPE_GETEXTENDEDMODE Nur DirectX 9.0 und höhere Versionen.
Wird verwendet, um den Treiber nach Informationen zu einem bestimmten erweiterten Anzeigemodus abzufragen, den er unterstützt. Der Treiber sollte die Datenstruktur, auf die das lpvData-Feld der DD_GETDRIVERINFODATA Datenstruktur verweist, auf DD_GETEXTENDEDMODEDATA festlegen.
D3DGDI2_TYPE_GETEXTENDEDMODECOUNT Nur DirectX 9.0 und höhere Versionen.
Wird verwendet, um den Treiber nach der Anzahl der unterstützten erweiterten Anzeigemodi abzufragen. Der Treiber sollte die Datenstruktur, auf die das Feld lpvData der DD_GETDRIVERINFODATA Datenstruktur verweist, auf DD_GETEXTENDEDMODECOUNTDATA festlegen.
D3DGDI2_TYPE_GETFORMAT Wird verwendet, um ein bestimmtes Oberflächenformat vom Treiber abzufragen. Die Datenstruktur, auf die das lpvDatafield der DD_GETDRIVERINFODATA-Datenstruktur verweist, ist DD_GETFORMATDATA .
D3DGDI2_TYPE_GETFORMATCOUNT Wird verwendet, um die Anzahl der vom Treiber unterstützten DirectX 8.0- und höher-Formatvorlagen anzufordern. Die Datenstruktur, auf die das FeldlpvData des DD_GETDRIVERINFODATA verweist, ist DD_GETFORMATCOUNTDATA.
D3DGDI2_TYPE_GETMULTISAMPLEQUALITYLEVELS Nur DirectX 9.0 und höhere Versionen.
Wird verwendet, um den Treiber nach der Anzahl von Qualitätsstufen mit mehreren Stichproben für ein bestimmtes Renderzielformat abzufragen, das er unterstützt. Unabhängig davon, ob das Anzeigegerät maskierbares oder untermaskierbares Multisampling unterstützt, muss der Treiber für das Gerät die Anzahl der Qualitätsstufen für den D3DMULTISAMPLE_NONMASKABLE Mehrfachmustertyp angeben. Der Treiber sollte die Datenstruktur, auf die das Feld lpvData der DD_GETDRIVERINFODATA Datenstruktur verweist, auf DD_MULTISAMPLEQUALITYLEVELSDATA festlegen.

dwExpectedSize

Gibt die erwartete Größe der angeforderten Informationen in Bytes an. Der Treiber sollte diesen Member nur lesen (nicht schreiben).

Hinweise

Der dwExpectedSize-Member der DD_GETDRIVERINFODATA-Struktur wird nicht verwendet, wenn eine GetDriverInfo2-Anforderung gestellt wird. Sein Wert ist in diesem Fall undefiniert und sollte ignoriert werden. Stattdessen befindet sich die tatsächliche erwartete Größe der Daten im dwExpectedSize-Element von DD_GETDRIVERINFO2DATA.

Das folgende Codefragment veranschaulicht die Behandlung von GetDriverInfo2:

D3DCAPS8 myD3DCaps8 = { ... };

DWORD CALLBACK
DdGetDriverInfo(LPDDHAL_GETDRIVERINFODATA lpData)
{
  if (MATCH_GUID((lpData->guidInfo), GUID_GetDriverInfo2))
  {
    ASSERT(NULL != lpData);
    ASSERT(NULL != lpData->lpvData);

    // Is this a call to GetDriverInfo2 or DDStereoMode?
 if (((DD_GETDRIVERINFO2DATA*)(lpData->lpvData))->dwMagic
      == D3DGDI2_MAGIC)
 {
      // Yes, it's a call to GetDriverInfo2, fetch the
 // DD_GETDRIVERINFO2DATA data structure.
      DD_GETDRIVERINFO2DATA* pgdi2 = lpData->lpvData;
 ASSERT(NULL != pgdi2);
      // What type of request is this?
      switch (pgdi2->dwType)
      {
        case D3DGDI2_TYPE_GETD3DCAPS8:
        {
          // The runtime is requesting the DX8 D3D caps
          // so copy them over now. It should be noted
          // that the dwExpectedSize field of
          // DD_GETDRIVERINFODATA is not used for
          // GetDriverInfo2 calls and should be ignored.
          size_t copySize = min(
            sizeof(myD3DCaps8), pgdi2->dwExpectedSize);
          memcpy(lpData->lpvData, &myD3DCaps8, copySize);
          lpData->dwActualSize = copySize;
          lpData->ddRVal       = DD_OK;
          return DDHAL_DRIVER_HANDLED;
        }
        default:
          // For any other GetDriverInfo2 types not handled
          // or understood by the driver set a ddRVal of
          // DDERR_CURRENTLYNOTAVAIL and return
          // DDHAL_DRIVER_HANDLED.
          return DDHAL_DRIVER_HANDLED;
      }
    }
    else
    {
      // It must be a call to request for stereo mode support.
 // Fetch the stereo mode data
      DD_STEREOMODE* pStereoMode = lpData->lpvData;
 ASSERT(NULL != pStereoMode);

      // Process the stereo mode request...
      lpData->dwActualSize = sizeof(DD_STEREOMODE);
      lpData->ddRVal       = DD_OK;
      return DDHAL_DRIVER_HANDLED;
    }
  }

  // Handle any other device GUIDs...

} // DdGetDriverInfo

Weitere Informationen zu D3DCAPS8 und D3DCAPS9 finden Sie in der DirectX SDK-Dokumentation.

Anforderungen

Anforderung Wert
Header d3dhal.h (include D3dhal.h)

Weitere Informationen

DD_DEFERRED_AGP_AWARE_DATA

DD_DXVERSION

DD_FREE_DEFERRED_AGP_DATA

DD_GETADAPTERGROUPDATA

DD_GETD3DQUERYCOUNTDATA

DD_GETD3DQUERYDATA

DD_GETDDIVERSIONDATA

DD_GETDRIVERINFODATA

DD_GETEXTENDEDMODECOUNTDATA

DD_GETEXTENDEDMODEDATA

DD_GETFORMATCOUNTDATA

DD_GETFORMATDATA

DD_MULTISAMPLEQUALITYLEVELSDATA

DD_STEREOMODE

DdGetDriverInfo