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

El sistema operativo llama a la rutina DxgkDdiGetDisplayStateNonIntrusive del controlador de miniporte de pantalla para recopilar información de estado de visualización del controlador de forma nointrusiva.

Sintaxis

DXGKDDI_GETDISPLAYSTATENONINTRUSIVE DxgkddiGetdisplaystatenonintrusive;

NTSTATUS DxgkddiGetdisplaystatenonintrusive(
  [in]     HANDLE Context,
  [in/out] PDXGKARG_GETDISPLAYSTATENONINTRUSIVE pArgs
)
{...}

Parámetros

[in] Context

Puntero a un contexto privado devuelto por DxgkDdiQueryInterface.

[in/out] pArgs

Puntero a una estructura de DXGKARG_GETDISPLAYSTATENONINTRUSIVE .

Valor devuelto

DxgkDdiGetDisplayStateNonIntrusive 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.

Observaciones

El sistema operativo llama a DxgkDdiGetDisplayStateNonIntrusive para recopilar información de estado de visualización del controlador. A diferencia de dxgkDdiGetDisplayStateIntrusive, la rutina DxgkDdiGetDisplayStateNonIntrusive del controlador no debe realizar ninguna operación que cause efectos secundarios visibles al usuario y el proceso de recopilación debe ser relativamente rápido (idealmente en unos pocos milisegundos). La frecuencia de llamada de esta rutina será relativamente alta. Además de llamarse para diagnosticar el estado de usuario incorrecto, el sistema operativo también puede usar esta rutina para registrar información de estado histórico del controlador con fines de depuración.

En casos excepcionales en los que una implementación específica de la plataforma requiere que el controlador lleve a cabo operaciones intrusivas como parte de una llamada a DxgkDdiGetDisplayStateNonIntrusive, el controlador debe llevar a cabo las operaciones, pero debe establecer pArgs-ReturnSubStatus> en DXGK_DIAG_GETDISPLAYSTATE_CAUSED_GLITCH o DXGK_DIAG_GETDISPLAYSTATE_CHANGED_DISPLAY_STATE en consecuencia. En función del valor ReturnSubStatus , el sistema operativo (SO) solo podría llamar a esta rutina para escenarios de error en un sistema determinado.

El sistema operativo llamará a DxgkDdiGetDisplayStateNonIntrusive con frecuencia (ya sea periódicamente o en otros eventos que suelen producirse) para recopilar datos de estado del controlador con fines de depuración y para examinar la escala de tiempo histórica. El sistema operativo también llamará a esta rutina en escenarios de error concretos (como pantallas negras) antes de recopilar información más detallada llamando a DxgkDdiGetDisplayStateIntrusive. Dada la frecuencia posible de esta llamada, los controladores deben completarla lo más rápido posible. El sistema operativo llamará a este DDI con NumOfTargets establecido en el número máximo de destinos admitidos por el adaptador de gráficos especificado y VidPnTargetId rellenado. El controlador de minipuerto solo debe rellenar la información de estado de visualización de los destinos en los que realmente hay un monitor conectado. Para un vidpntarget en el que no hay ningún monitor conectado, el minipuerto solo debe rellenar DXGK_DIAG_DISPLAY_CONNECTIVITY y el sistema operativo omitirá todos los demás campos de ese destino.

Nota

Los controladores solo deben usar ReturnSubStatus para notificar las condiciones de error y no usar DXGK_DIAG_GETDISPLAYSTATE_MONITOR_NOT_CONNECTED para notificar el estado de conectividad del monitor. El propósito principal de DXGK_DIAG_GETDISPLAYSTATE_MONITOR_NOT_CONNECTED es para llamadas intrusivas en las que el sistema operativo no pregunta sobre la conectividad de supervisión.

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 los IHD durante la depuración.

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

Requisitos

   
Cliente mínimo compatible Windows 10, versión 2004
Header dispmprt.h

Consulte también

DXGKARG_GETDISPLAYSTATENONINTRUSIVE

DxgkDdiCollectDiagnosticInfo

DxgkDdiGetDisplayStateIntrusive

DxgkDdiQueryInterface