PFND3DDDI_SETDISPLAYMODECB función de devolución de llamada (d3dumddi.h)

La función pfnSetDisplayModeCb establece la asignación que se usa para examinar la pantalla.

Sintaxis

PFND3DDDI_SETDISPLAYMODECB Pfnd3dddiSetdisplaymodecb;

HRESULT Pfnd3dddiSetdisplaymodecb(
  HANDLE hDevice,
  D3DDDICB_SETDISPLAYMODE *unnamedParam2
)
{...}

Parámetros

hDevice

Identificador del dispositivo de visualización (contexto de gráficos).

unnamedParam2

pData [in, out]

Puntero a una estructura de D3DDDICB_SETDISPLAYMODE que describe la asignación que se usa para examinar.

Valor devuelto

pfnSetDisplayModeCb devuelve uno de los siguientes valores:

Código devuelto Descripción
S_OK El modo de presentación se estableció correctamente.
E_INVALIDARG Los parámetros se validaron y determinaron que son incorrectos.
D3DDDIERR_INCOMPATIBLEPRIVATEFORMAT El controlador de pantalla en modo de usuario debe convertir el formato de la superficie asociada a la asignación que el miembro hPrimaryAllocation de D3DDDICB_SETDISPLAYMODE especifica en el atributo de formato que especifica el miembro PrivateDriverFormatAttribute de D3DDDICB_SETDISPLAYMODE. A continuación, el controlador debe llamar a pfnSetDisplayModeCb de nuevo. El controlador podría asignar una nueva asignación, realizar una transferencia de bloque de bits de conversión (bitblt) desde la superficie principal antigua al nuevo y, a continuación, destruir la base principal anterior siempre que el controlador use el nuevo identificador de asignación para esta asignación para todas las operaciones posteriores. El controlador debe repetir este proceso hasta que pfnSetDisplayModeCb devuelva un valor devuelto diferente.

Esta función también podría devolver otros valores HRESULT.

Comentarios

Después de que el tiempo de ejecución de Microsoft Direct3D llame a la función SetDisplayMode o SetDisplayModeDXGI del controlador de pantalla en modo de usuario para establecer la superficie principal que se va a examinar en la pantalla, el controlador de pantalla en modo de usuario llama a la función pfnSetDisplayModeCb para establecer la asignación principal subyacente que se usa para el examen.

Nota Antes de que el controlador de pantalla en modo de usuario llame a pfnSetDisplayModeCb para establecer un nuevo modo de presentación que use un formato extendido, un método de muestreo múltiple o ambos, el controlador debe asegurarse de que el modo de presentación GDI actual tenga la misma resolución que el nuevo modo de presentación; de lo contrario, pfnSetDisplayModeCb devuelve E_INVALIDARG.
 

Nota de Direct3D versión 11: Para obtener más información sobre cómo el controlador llama a pfnSetDisplayModeCb, consulta Cambios de Direct3D 10.

Ejemplos

En el ejemplo de código siguiente se muestra cómo establecer la asignación para examinarla en la pantalla.

HRESULT CD3DContext::SetDisplayMode(CONST D3DDDIARG_SETDISPLAYMODE* pSetDisplayMode) {
    DWORD   dwSrcSurf = ((DWORD)(DWORD_PTR)pSetDisplayMode->hResource) + pSetDisplayMode->SubResourceIndex;
    HRESULT hr;
    // Timestamp the source surface
    m_RTbl[dwSrcSurf].m_qwBatch = m_qwBatch;
    // Send the presentation request to the display miniport driver
    D3DDDICB_SETDISPLAYMODE SetDisplayModeCBData = {0};

    SetDisplayModeCBData.hPrimaryAllocation = R200GetSurfaceAllocHandle(m_pR200Ctx,
                                        dwSrcSurf);

    hr = m_d3dCallbacks.pfnSetDisplayModeCb(m_hD3D, &SetDisplayModeCBData);

    return (hr);
}

Requisitos

Requisito Value
Cliente mínimo compatible Disponible en Windows Vista y versiones posteriores de los sistemas operativos Windows.
Plataforma de destino Escritorio
Encabezado d3dumddi.h (incluya D3dumddi.h)

Consulte también

D3DDDICB_SETDISPLAYMODE

D3DDDI_DEVICECALLBACKS

SetDisplayMode

SetDisplayModeDXGI