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) |