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

El sistema operativo (OS) llama a la rutina DxgkDdiGetDisplayStateNonIntrusive del controlador de pantalla para recopilar información de estado de visualización del controlador.

Sintaxis

DXGKDDI_GETDISPLAYSTATEINTRUSIVE DxgkddiGetdisplaystateintrusive;

NTSTATUS DxgkddiGetdisplaystateintrusive(
  [in]     HANDLE Context,
  [in/out] PDXGKARG_GETDISPLAYSTATEINTRUSIVE pArgs
)
{...}

Parámetros

[in] Context

Puntero a un contexto privado devuelto por DxgkDdiQueryInterface.

[in/out] pArgs

Puntero a una estructura de DXGKARG_GETDISPLAYSTATEINTRUSIVE .

Valor devuelto

DxgkDdiGetDisplayStateIntrusive devuelve STATUS_SUCCESS si se realiza correctamente. De lo contrario, devuelve un código de error como uno de los siguientes.

Código de error Significado
STATUS_DRIVER_INTERNAL_ERROR Error de software genérico dentro del controlador.
STATUS_ACCESS_DENIED El hardware está siendo utilizado actualmente por otros subprocesos y esta DDI no puede obtener acceso a él.
STATUS_DEVICE_HARDWARE_ERROR Error de HW genérico.
STATUS_DEVICE_POWERED_OFF El dispositivo está apagado.

Comentarios

El sistema operativo llama a DxgkDdiGetDisplayStateIntrusive para recopilar información de estado de visualización del controlador cuando el usuario ya está en un estado incorrecto. A diferencia de dxgkDdiGetDisplayStateNonIntrusive, la rutina DxgkDdiGetDisplayStateIntrusive del controlador puede llevar a cabo operaciones más intrusivas que tienen efectos secundarios visibles para el usuario. Una operación intrusiva se define de la siguiente manera (las operaciones no intrusivas no tienen ninguna de estas propiedades):

  • Causa efectos secundarios (problemas) que son visibles para el usuario (por ejemplo, detener temporalmente el examen y comprobar la conectividad de monitor destructiva).

  • Es lento y afecta al rendimiento del sistema o de visualización si se llama con frecuencia (varias veces en un segundo).

  • Cambia el estado del subsistema de visualización (o cualquier otro subsistema) directa o indirectamente.

El controlador no debe cambiar el estado del sistema intencionadamente al recopilar datos.

El sistema operativo llamará a esta rutina con mucha menos frecuencia en relación con las llamadas a DxgkDdiGetDisplayStateNonIntrusive. En la mayoría de los escenarios de error, el sistema operativo llamará primero a DxgkDdiGetDisplayStateNonIntrusive y, a continuación, llamará a DxgkDdiGetDisplayStateIntrusive para asegurarse de que cualquier efecto involuntario de la llamada intrusiva no afecte a la colección de datos no intrusiva.

DXGKRNL llamará a esta rutina con NumOfTargets establecido en el número de destinos en los que el sistema operativo informa de que hay un monitor conectado con el vidPnTargetId correspondiente rellenado. Cuando el controlador cree que no hay ningún monitor conectado en un destino determinado, debe establecer ReturnSubStatus para que ese destino sea DXGK_DIAG_GETDISPLAYSTATE_MONITOR_NOT_CONNECTED.

Nota

Si el controlador alcanza un error en un vidpntarget determinado al recopilar información, debe usar ReturnSubStatus para establecer el estado de error y continuar con el siguiente vidpntarget y no producir un error en la llamada general a menos que todas las rutas de acceso lleguen a errores. Lo ideal es que los controladores registren errores durante esta llamada en algún registro de errores interno para que cuando el sistema operativo llame a DxgkDdiCollectDiagnosticInfo para recopilar información de caja negra, estos errores se capturan como parte de una colección de registros interna para ayudar a depurar IHVs.

El sistema operativo tendrá un tiempo de espera suficiente (aproximadamente 5 segundos) para que DxgkDdiGetDisplayStateIntrusive se complete, lo que proporciona al controlador más tiempo para recopilar todo el estado pertinente. Después de un tiempo de espera, el sistema operativo podría comprobar el equipo y recopilar un volcado si el controlador se bloquea en esta llamada, por lo que el miniporte debe intentar completar siempre esta llamada dentro del período de tiempo.

El nivel de sincronización de esta DDI es la sincronización de nivel cero.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 10, versión 2004
Encabezado dispmprt.h

Consulte también

DXGKARG_GETDISPLAYSTATEINTRUSIVE

DxgkDdiCollectDiagnosticInfo

DxgkDdiGetDisplayStateNonIntrusive

DxgkDdiQueryInterface