DXGKDDI_GETDISPLAYSTATENONINTRUSIVE función de devolución de llamada (dispmprt.h)
El sistema operativo llama a un controlador de minipuerto de pantalla DxgkDdiGetDisplayStateNonIntrusive rutina para recopilar información de estado de visualización nointrusiva del controlador.
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 DXGKARG_GETDISPLAYSTATENONINTRUSIVE.
Valor devuelto
dxgkDdiGetDisplayStateNonIntrusive devuelve STATUS_SUCCESS si se ejecuta 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 este 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, el controlador DxgkDdiGetDisplayStateNonIntrusive rutina 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 un 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 poco frecuentes en los que una implementación específica de la plataforma requiere que el controlador realice operaciones intrusivas como parte de una llamada a DxgkDdiGetDisplayStateNonIntrusive, el controlador debe llevar a cabo las operaciones, pero debe establecer pArgs->ReturnSubStatus para DXGK_DIAG_GETDISPLAYSTATE_CAUSED_GLITCH o DXGK_DIAG_GETDISPLAYSTATE_CHANGED_DISPLAY_STATE en consecuencia. En función del valor de 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 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 posible frecuencia 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 rellenados. 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 miniport 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. Idealmente, los controladores deben registrar 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 este DDI es sincronización de nivel cero.
Requisitos
Requisito | Valor |
---|---|
cliente mínimo admitido | Windows 10, versión 2004 |
encabezado de | dispmprt.h |
Consulte también
DXGKARG_GETDISPLAYSTATENONINTRUSIVE