DXGKDDI_SET_POWER_STATE función de devolución de llamada (dispmprt.h)
La función DxgkDdiSetPowerState establece el estado de energía de un adaptador de pantalla o un dispositivo secundario de un adaptador de pantalla.
Sintaxis
DXGKDDI_SET_POWER_STATE DxgkddiSetPowerState;
NTSTATUS DxgkddiSetPowerState(
[in] IN_CONST_PVOID MiniportDeviceContext,
[in] IN_ULONG DeviceUid,
[in] IN_DEVICE_POWER_STATE DevicePowerState,
[in] IN_POWER_ACTION ActionType
)
{...}
Parámetros
[in] MiniportDeviceContext
Identificador de un bloque de contexto asociado a un adaptador de pantalla. La función DxgkDdiAddDevice del controlador de minipuerto de pantalla proporcionó anteriormente este identificador al subsistema del kernel de gráficos de DirectX.
[in] DeviceUid
Entero positivo que identifica el dispositivo para el que se va a establecer el estado de energía. Si DeviceUid es igual a DISPLAY_ADAPTER_HW_ID (definido en Video.h), el dispositivo es el propio adaptador de pantalla. De lo contrario, DeviceUid es el identificador de un dispositivo secundario del adaptador de pantalla. La función DxgkDdiQueryChildRelations asignó previamente identificadores de dispositivo secundarios.
[in] DevicePowerState
Valor de enumeración DEVICE_POWER_STATE que proporciona el estado de alimentación (PowerDeviceD0, PowerDeviceD1, PowerDeviceD2, PowerDeviceD3) al que se debe establecer el dispositivo.
[in] ActionType
Valor de enumeración POWER_ACTION que proporciona el motivo (PowerActionSleep, PowerActionHibernate, PowerActionShutdown) para el cambio de estado de energía.
Valor devuelto
DxgkDdiSetPowerState devuelve STATUS_SUCCESS si se realiza correctamente. DxgkDdiSetPowerState nunca debería fallar; sin embargo, puede devolver cualquier valor con tipo NTSTATUS definido en Ntstatus.h y que pase la macro NT_SUCCESS(Status).
Comentarios
Si el estado solicitado es igual a PowerDeviceD1, PowerDeviceD2 o PowerDeviceD3, DxgkDdiSetPowerState guarda cualquier contexto que se necesitará más adelante para devolver el dispositivo a PowerDeviceD0 y, a continuación, coloca el dispositivo en el estado solicitado. Si el estado solicitado es PowerDeviceD0 (totalmente activado), DxgkDdiSetPowerState restaura el contexto del dispositivo y coloca el dispositivo en PowerDeviceD0.
Si se llama a DxgkDdiSetPowerState con una solicitud para poner el adaptador de pantalla habilitado para VGA en hibernación, no debe apagar el adaptador de pantalla. En su lugar, debe guardar el contexto y dejar que el controlador de bus apague el adaptador de pantalla. De este modo, el administrador de energía puede mostrar el progreso de hibernación después de que se haya notificado al controlador de minipuerto de pantalla sobre el cambio de estado de energía.
El sistema operativo podría llamar a DxgkDdiSetPowerState en un dispositivo secundario del adaptador de pantalla que ya no está conectado (por ejemplo, un monitor que se desenchufó recientemente). Esta anomalía se produce porque existe una latencia inherente entre el momento en que el sistema operativo llama a DxgkDdiSetPowerState del controlador y la hora en que el sistema operativo procesa la desconexión. El controlador debe controlar estas situaciones sin errores.
Si DevicePowerState es igual a PowerDeviceD0, no confíe en el valor de ActionType.
A partir del modelo de controlador de pantalla de Windows (WDDM) 1.2, si el parámetro DevicePowerState está establecido en PowerDeviceD0, el controlador de minipuerto de pantalla debe llamar a DxgkCbAcquirePostDisplayOwnership para consultar la información sobre el modo de presentación. Este modo de pantalla podría haber sido establecido previamente por el cargador del sistema y el firmware. Si DxgkCbAcquirePostDisplayOwnership devuelve con STATUS_SUCCESS, el controlador debe determinar si tiene que reinicializar la presentación en función de la información del modo de presentación que se devolvió a través del parámetro DisplayInfo . De lo contrario, el controlador no debe suponer que ningún modo de presentación específico está habilitado actualmente en el dispositivo y debe inicializar la pantalla.
La función DxgkDdiSetPowerState debe ser paginable.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Disponible a partir de Windows Vista. |
Plataforma de destino | Escritorio |
Encabezado | dispmprt.h |
IRQL | PASSIVE_LEVEL |