Compartir a través de


DXGKDDI_SYSTEM_DISPLAY_ENABLE función de devolución de llamada (dispmprt.h)

Llamado por el sistema operativo para solicitar al controlador de minipuerto de pantalla que restablezca el dispositivo de pantalla actual a un estado especificado.

A partir de Windows 8, el sistema operativo llama a esta función durante una operación de comprobación de errores después de un error de detención del sistema.

Sintaxis

DXGKDDI_SYSTEM_DISPLAY_ENABLE DxgkddiSystemDisplayEnable;

NTSTATUS DxgkddiSystemDisplayEnable(
  [in]  PVOID MiniportDeviceContext,
  [in]  D3DDDI_VIDEO_PRESENT_TARGET_ID TargetId,
  [in]  PDXGKARG_SYSTEM_DISPLAY_ENABLE_FLAGS Flags,
  [out] UINT *Width,
  [out] UINT *Height,
  [out] D3DDDIFORMAT *ColorFormat
)
{...}

Parámetros

[in] MiniportDeviceContext

Identificador de un bloque de contexto asociado a un adaptador de pantalla. La función DxgkDdiAddDevice del controlador de miniporte de pantalla proporcionó anteriormente este identificador al subsistema del kernel de gráficos de Microsoft DirectX.

[in] TargetId

Valor de D3DDDI_VIDEO_PRESENT_TARGET_ID que especifica el identificador del destino presente de vídeo en el adaptador de pantalla al que está conectado el dispositivo de visualización. Este identificador podría ser para el destino que se dejó en el estado actual de la red de presentación de vídeo (VidPn) durante la llamada anterior a DxgkDdiCommitVidPn.

Para obtener más información sobre el uso del parámetro TargetId , consulte la siguiente sección "Video present target initialization".

[in] Flags

Puntero a un valor que contiene un OR bit a bit de marcas. Este miembro está reservado por el sistema operativo.

[out] Width

Valor UINT que especifica el ancho del modo de presentación del dispositivo especificado en unidades de píxeles.

[out] Height

Valor UINT que especifica el alto del modo de presentación del dispositivo especificado en unidades de píxeles.

[out] ColorFormat

Puntero a un valor de D3DDDIFORMAT que especifica el formato de color del dispositivo de visualización.

Valor devuelto

DxgkDdiSystemDisplayEnable devuelve STATUS_SUCCESS si se ejecuta correctamente. Si el destino especificado por el parámetro TargetId no está conectado a un dispositivo de visualización, la función devuelve STATUS_NOT_SUPPORTED. De lo contrario, devuelve uno de los códigos de error definidos en Ntstatus.h.

Comentarios

Pasos necesarios para mostrar el controlador de minipuerto

El controlador de minipuerto de pantalla debe seguir estos pasos cuando se llama a su función DxgkDdiSystemDisplayEnable :
  1. El controlador debe cancelar todas las operaciones de la unidad de procesamiento de gráficos (GPU) o restablecer la GPU al estado inactivo.
  2. El sistema operativo indica el destino del vídeo presente a través del parámetro TargetId . El controlador debe mantener la pantalla asociada a este destino encendido y visible. Si el controlador no puede encender la pantalla, debe producir un error en la llamada a esta función. En este caso de error, el sistema operativo podría llamar a la función DxgkDdiResetDevice y provocar que se produzca una comprobación de errores del sistema.
  3. El controlador debe comprobar la conectividad de la pantalla asociada a este destino. Si el destino no tiene una pantalla conectada, el controlador debe completar la llamada a esta función y devolver el código de error STATUS_NOT_SUPPORTED .
  4. El controlador debe deshabilitar la señal en todas las demás pantallas conectadas al adaptador de pantalla. Si esto no es posible, el controlador debe intentar colocar una imagen en blanco en todas las demás pantallas. Si esto no es posible, el controlador debe dejar la última imagen en la pantalla sin cambios.
  5. El controlador debe mantener el modo de visualización actual en el destino indicado y devolver este modo al sistema operativo como parte de esta llamada de función.
  6. Si el controlador no puede mantener el modo de visualización actual o si el destino no forma parte de la topología activa, el controlador debe intentar establecer un búfer de fotogramas en otro destino que sea capaz de una resolución de visualización de al menos 640 x 480 píxeles en un formato de 24 bits por píxel. Si esto no es posible, el controlador puede producir un error en esta llamada de función, lo que provocará una comprobación de errores del sistema y la visualización de una pantalla negra.

    No es necesario que el controlador use un modo de búfer de fotograma lineal. Sin embargo, el controlador debe admitir operaciones de escritura en este búfer de fotogramas de orígenes que tengan el formato D3DDDIFMT_A8R8G8B8 de la enumeración D3DDDIFORMAT .

Restricciones de imagen de origen

Una vez que el controlador proporciona el control del sistema operativo sobre la funcionalidad de visualización, el sistema operativo puede llamar a la función DxgkDdiSystemDisplayWrite para actualizar la imagen de pantalla y escribir un bloque de imágenes de orígenes especificados en la pantalla que ha restablecido la función DxgkDdiSystemDisplayEnable .

DxgkDdiSystemDisplayWrite proporciona al controlador la dirección inicial de la imagen de origen, así como el paso, el ancho y el alto. El formato de color de la imagen de origen siempre se D3DDDIFMT_X8R8G8B8. El sistema operativo garantiza que la imagen de origen está en memoria no paginada.

El controlador debe escribir esta imagen de origen en la pantalla actual a partir de las posiciones especificadas por los parámetros PositionX y PositionY de la función DxgkDdiSystemDisplayWrite .

Se recomienda que el controlador use la CPU para escribir la imagen del origen en el búfer de fotogramas porque una comprobación de errores del sistema puede deberse a instancias repetidas de detección y recuperación de tiempo de espera (TDR) que dan lugar a que la GPU se encuentra en una condición desconocida.

Usar memoria no paginada

Es posible que las funciones en modo kernel de Windows no estén disponibles mientras se llama a esta función.

Se puede llamar a DxgkDdiSystemDisplayEnable en cualquier IRQL, por lo que debe estar en memoria no paginable. DxgkDdiSystemDisplayEnable no debe llamar a ningún código que esté en memoria paginable y no debe manipular ningún dato que esté en memoria paginable.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 8
Servidor mínimo compatible Windows Server 2012
Plataforma de destino Escritorio
Encabezado dispmprt.h
IRQL Cualquier nivel (consulte la sección Comentarios)

Consulte también

D3DDDIFORMAT

DxgkCbAcquirePostDisplayOwnership

DxgkDdiAddDevice

DxgkDdiResetDevice

DxgkDdiStopDeviceAndReleasePostDisplayOwnership

DxgkDdiSystemDisplayWrite