Compartir a través de


EVT_IDD_CX_MONITOR_ASSIGN_SWAPCHAIN función de devolución de llamada (iddcx.h)

el sistema operativo llama a EVT_IDD_CX_MONITOR_ASSIGN_SWAPCHAIN para informar al controlador de pantalla indirecto (IDD) de un cambio de modo para monitores en el adaptador.

Sintaxis

EVT_IDD_CX_MONITOR_ASSIGN_SWAPCHAIN EvtIddCxMonitorAssignSwapchain;

NTSTATUS EvtIddCxMonitorAssignSwapchain(
  [in] IDDCX_MONITOR MonitorObject,
  [in] const IDARG_IN_SETSWAPCHAIN *pInArgs
)
{...}

Parámetros

[in] MonitorObject

Identificador de IDDCX_MONITOR opaco creado por el controlador usado por el sistema operativo para identificar el monitor afectado por el cambio de modo.

[in] pInArgs

Puntero a una estructura de IDARG_IN_SETSWAPCHAIN que contiene información para que el controlador use para establecer la cadena de intercambio indirecta.

Valor devuelto

(NTSTATUS) Si la operación se realiza correctamente, la función de devolución de llamada debe devolver STATUS_SUCCESS u otro valor de estado para el que NT_SUCCESS(status) es igual a TRUE. Si se produce un error, el IDD debe devolver STATUS_GRAPHICS_INDIRECT_DISPLAY_ABANDON_SWAPCHAIN si hay una buena probabilidad de que el error no se vuelva a producir. De lo contrario, debe devolver un código de error NTSTATUS adecuado. Vea la sección Comentarios.

Comentarios

El sistema operativo llama a EvtIddCxMonitorAssignSwapChain para que el IDD pueda configurar su mecanismo de procesamiento de fotogramas. Por ejemplo, un IDD podría crear un subproceso para inicializar dispositivos D3D y, a continuación, recorrer en bucle los marcos de procesamiento (consulte el ejemplo de controlador de identificador).

Si EvtIddCxMonitorAssignSwapChain devuelve éxito, el IDD posee el objeto IDARG_IN_SETSWAPCHAIN.hSwapChain y es responsable de llamar a WdfObjectDelete para liberar el objeto de cadena de intercambio cuando deja de procesar fotogramas. El procesamiento de la cadena de intercambio puede detener el procesamiento de fotogramas cuando se llama a EvtIddCxMonitorUnassignSwapChain o cuando se produce un error en el bucle de procesamiento de fotogramas después de que se devuelva correctamente a EvtIddCxMonitorAssignSwapChain. Esto se aplica tanto a adaptadores de consola como a id. remotos y a todas las versiones de IddCx.

A partir de Windows 10, versión 1903, para reducir el impacto del usuario (por ejemplo, el tiempo invertido en esperar a que IddCx corrija el controlador), IddCx comprobará inmediatamente el controlador si EvtIddCxMonitorAssignSwapChain notifica un código de error distinto de STATUS_GRAPHICS_INDIRECT_DISPLAY_ABANDON_SWAPCHAIN.

Si el controlador devuelve STATUS_GRAPHICS_INDIRECT_DISPLAY_ABANDON_SWAPCHAIN, IddCx informará al compositor de escritorio. Es necesario crear una nueva cadena de intercambio, por lo que el sistema operativo llamará de nuevo a EvtIddCxMonitorAssignSwapChain. Un controlador de identificador debe usar este código de retorno solo si hay una buena probabilidad de que el error que se haya producido no se vuelva a producir. Es decir, un controlador de identificador no debe dejar a los usuarios con un escritorio inutilizable porque devolvió el código de error pero no hizo nada para asegurarse de que el mismo error no se volverá a producir. Por ejemplo, si un controlador encuentra un error al crear el dispositivo D3D en el adaptador de representación, podría llamar a IddCxAdapterSetRenderAdapter para cambiar a otro adaptador (quizás otro GPU o WARP) y, a continuación, devolver STATUS_GRAPHICS_INDIRECT_DISPLAY_ABANDON_SWAPCHAIN. El sistema operativo creará una nueva cadena de intercambio en el nuevo adaptador de representación y, con suerte, evitará el error. Aunque este código de error se define a partir de Windows 10 versión 1903, un controlador de identificador puede devolver este código de error en versiones anteriores del sistema operativo, lo que no produce ningún efecto.

La resolución de las superficies de la cadena de intercambio siempre será la misma resolución que el modo de destino establecido.

El formato de las superficies será uno de los formatos admitidos por el controlador, pero el formato de cada búfer adquirido puede cambiar entre los formatos admitidos de fotograma a fotograma. El controlador debe comprobar el formato de cada búfer adquirido.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 10
Servidor mínimo compatible Windows Server 2016
Plataforma de destino Windows
Encabezado iddcx.h
IRQL requires_same

Consulte también

EvtIddCxMonitorUnassignSwapChain

IDARG_IN_SETSWAPCHAIN