estructura DD_GETDRIVERINFO2DATA (d3dhal.h)
DirectX 8.0 y versiones posteriores solo.
DD_GETDRIVERINFO2DATA se pasa en el miembro lpvData de la estructura DD_GETDRIVERINFODATA cuando se especifica GUID_GetDriverInfo2 en el miembro guidInfo de DD_GETDRIVERINFODATA en una llamada DdGetDriverInfo .
Sintaxis
typedef struct _DD_GETDRIVERINFO2DATA {
DWORD dwReserved;
DWORD dwMagic;
DWORD dwType;
DWORD dwExpectedSize;
} DD_GETDRIVERINFO2DATA;
Miembros
dwReserved
Especifica un campo reservado. El controlador no debe leer ni escribir.
dwMagic
Especifica el número mágico. Tiene el valor D3DGDI2_MAGIC si se trata de una llamada a GetDriverInfo2 . De lo contrario, esta estructura es, de hecho, una llamada DD_STEREOMODE .
dwType
Especifica el tipo de información solicitada, que puede contener uno de los siguientes valores D3DGDI2_TYPE_Xxx . El controlador solo debe leer (no escribir) este miembro.
Valor | Significado |
---|---|
D3DGDI2_TYPE_DEFER_AGP_FREES | Solo sistemas operativos basados en NT. Se usa para notificar al controlador que debe controlar correctamente la destrucción de la memoria AGP para las superficies. El runtime proporciona un puntero a una estructura de DD_FREE_DEFERRED_AGP_DATA en el campo lpvData de la estructura de datos DD_GETDRIVERINFODATA. A veces, el controlador recibe esta notificación antes de que se produzca un cambio de modo de visualización. El tiempo de ejecución solo envía esta notificación si se va a usar para realizar el cambio de modo de presentación. Los controladores deben comprobar el identificador de proceso (PID) del proceso que destruye la superficie en el proceso que creó la superficie. Si los PID son diferentes, es probable que el controlador no destruya las asignaciones en modo de usuario de la memoria AGP porque es posible que una aplicación siga usando la memoria. |
D3DGDI2_TYPE_DEFERRED_AGP_AWARE | Solo sistemas operativos basados en NT. Se usa para informar al controlador de que el tiempo de ejecución envía D3DGDI2_TYPE_FREE_DEFERRED_AGP y D3DGDI2_TYPE_DEFER_AGP_FREES notificaciones en el momento adecuado (por ejemplo, después de que se libere el último bloqueo de memoria AGP pendiente). El runtime proporciona un puntero a una estructura de DD_DEFERRED_AGP_AWARE_DATA en el campo lpvData de la estructura de datos DD_GETDRIVERINFODATA. |
D3DGDI2_TYPE_DXVERSION | Se usa para notificar al controlador de la versión actual del entorno de ejecución de DX que usa la aplicación. El runtime proporciona un puntero a una estructura de DD_DXVERSION en el campo lpvData de la estructura de datos DD_GETDRIVERINFODATA. |
D3DGDI2_TYPE_FREE_DEFERRED_AGP | Solo sistemas operativos basados en NT. Se usa para notificar al controlador que ahora es seguro destruir todas las asignaciones en modo de usuario de la memoria AGP . El controlador conserva estas asignaciones en modo de usuario cuando se destruyeron las superficies y recibió una notificación de D3DGDI2_TYPE_DEFER_AGP_FREES. El runtime proporciona un puntero a una estructura de DD_FREE_DEFERRED_AGP_DATA en el campo lpvData de la estructura de datos DD_GETDRIVERINFODATA. El controlador recibe esta notificación cuando todos los dispositivos de visualización del proceso dejan de usar superficies, texturas, búferes de vértices e índices bloqueados en el momento del cambio del modo de presentación. |
D3DGDI2_TYPE_GETADAPTERGROUP | DirectX 9.0 y versiones posteriores solo. Se usa para consultar al controlador la identidad del grupo de adaptadores que forman parte de su tarjeta de vídeo de varios cabezales. Este grupo comparte hardware de vídeo como la memoria de vídeo y el acelerador 3D. El controlador debe establecer la estructura de datos a la que apunta el campo lpvData de la estructura de datos DD_GETDRIVERINFODATA en DD_GETADAPTERGROUPDATA. |
D3DGDI2_TYPE_GETD3DCAPS8 | Este tipo indica que el tiempo de ejecución solicita recibir una estructura de D3DCAPS8 que proporciona las funcionalidades de estilo de DirectX 8.0 del dispositivo. El controlador debe copiar una estructura de D3DCAPS8 inicializada en el campo lpvData de la estructura DD_GETDRIVERINFODATA. |
D3DGDI2_TYPE_GETD3DCAPS9 | Necesario solo para DirectX 9.0 y versiones posteriores. Este tipo indica que el tiempo de ejecución solicita recibir una estructura de D3DCAPS9 que proporciona las funcionalidades de estilo de DirectX 9.0 del dispositivo. El controlador debe copiar una estructura de D3DCAPS9 inicializada en el campo lpvData de la estructura DD_GETDRIVERINFODATA. |
D3DGDI2_TYPE_GETD3DQUERY | DirectX 9.0 y versiones posteriores solo. Se usa para consultar al controlador para obtener información sobre un tipo de consulta determinado que admite. El controlador debe establecer la estructura de datos a la que apunta el campolpvData de la estructura de datos DD_GETDRIVERINFODATA en DD_GETD3DQUERYDATA. |
D3DGDI2_TYPE_GETD3DQUERYCOUNT | DirectX 9.0 y versiones posteriores solo. Se usa para consultar al controlador el número de tipos de consulta que admite. El controlador debe establecer la estructura de datos a la que apunta el campo lpvData de la estructura de datos DD_GETDRIVERINFODATA en DD_GETD3DQUERYCOUNTDATA. |
D3DGDI2_TYPE_GETDDIVERSION | DirectX 9.0 y versiones posteriores solo. Se usa para consultar el controlador para la versión del DDI que admite el controlador; esta versión de DDI, a su vez, depende de la versión de DirectX que realiza esta solicitud. El controlador debe establecer el miembro dwDDIVersion de la estructura DD_GETDDIVERSIONDATA , a la que apunta el campo lpvData de la estructura de datos DD_GETDRIVERINFODATA, a la versión de DDI adecuada. |
D3DGDI2_TYPE_GETEXTENDEDMODE | DirectX 9.0 y versiones posteriores solo. Se usa para consultar al controlador para obtener información sobre un modo de visualización extendido determinado que admite. El controlador debe establecer la estructura de datos a la que apunta el campo lpvData de la estructura de datos DD_GETDRIVERINFODATA en DD_GETEXTENDEDMODEDATA. |
D3DGDI2_TYPE_GETEXTENDEDMODECOUNT | DirectX 9.0 y versiones posteriores solo. Se usa para consultar al controlador el número de modos de visualización extendidos que admite. El controlador debe establecer la estructura de datos a la que apunta el campo lpvData de la estructura de datos DD_GETDRIVERINFODATA en DD_GETEXTENDEDMODECOUNTDATA. |
D3DGDI2_TYPE_GETFORMAT | Se usa para consultar un formato de superficie determinado desde el controlador. La estructura de datos a la que apunta el campo lpvDatafield de la estructura de datos de DD_GETDRIVERINFODATA es DD_GETFORMATDATA . |
D3DGDI2_TYPE_GETFORMATCOUNT | Se usa para solicitar el número de formatos de superficie de estilo DirectX 8.0 y posteriores admitidos por el controlador. La estructura de datos a la que apunta el campolpvData del DD_GETDRIVERINFODATA es DD_GETFORMATCOUNTDATA. |
D3DGDI2_TYPE_GETMULTISAMPLEQUALITYLEVELS | DirectX 9.0 y versiones posteriores solo. Se usa para consultar al controlador el número de niveles de calidad de varias muestras para un formato de destino de representación determinado que admita. Tanto si el dispositivo de pantalla admite el muestreo múltiple enmascarable como el submascarable, el controlador del dispositivo debe proporcionar el número de niveles de calidad para el D3DMULTISAMPLE_NONMASKABLE tipo de muestra múltiple. El controlador debe establecer la estructura de datos a la que apunta el campo lpvData de la estructura de datos DD_GETDRIVERINFODATA en DD_MULTISAMPLEQUALITYLEVELSDATA. |
dwExpectedSize
Especifica el tamaño esperado, en bytes, de la información solicitada. El controlador solo debe leer (no escribir) este miembro.
Comentarios
El miembro dwExpectedSize de la estructura DD_GETDRIVERINFODATA no se usa cuando se realiza una solicitud GetDriverInfo2 . Su valor no está definido en este caso y debe omitirse. En su lugar, el tamaño esperado real de los datos se encuentra en el miembro dwExpectedSize de DD_GETDRIVERINFO2DATA.
En el fragmento de código siguiente se muestra cómo controlar 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
Para obtener más información sobre D3DCAPS8 y D3DCAPS9, consulte la documentación del SDK de DirectX.
Requisitos
Requisito | Valor |
---|---|
Header | d3dhal.h (incluya D3dhal.h) |