Determinar el estado correcto de energía del dispositivo

El propietario de la directiva de energía comprueba la matriz DeviceState en la estructura de DEVICE_CAPABILITIES para determinar el intervalo válido de estados de energía del dispositivo para cada estado de alimentación del sistema. La matriz muestra el estado de energía del dispositivo más alto que el dispositivo subyacente puede admitir para cada estado de alimentación del sistema.

Al elegir un estado específico de este intervalo, tenga en cuenta lo siguiente:

  • La mayoría de los dispositivos entran en el estado D0 cuando el sistema entra en el estado S0.

  • La mayoría de los dispositivos entran en el estado D3 cuando el sistema entra en estado de suspensión. Sin embargo, es posible que sea necesario que un dispositivo que esté habilitado para reactivación escriba D1 o D2 en su lugar, si admite dichos estados. Para obtener más información, consulte Reporting Device Power Capabilities.

  • Se aplican reglas especiales para el dispositivo que contendrá el archivo de hibernación. Si el IRP del sistema solicita PowerSystemHibernate, el dispositivo que contendrá el archivo de hibernación no debe apagarse. El propietario de la directiva de energía de este tipo de dispositivo debe solicitar el estado de alimentación D3 del dispositivo y guardar el contexto, pero los controladores del dispositivo no deben apagar el dispositivo.

Si el IRP del sistema solicita PowerSystemShutdown, el controlador debe comprobar el valor de POWER_ACTION en Irp-Parameters.Power.ShutdownType> para determinar el motivo del cambio de estado. Para obtener más información, consulte Acciones de energía del sistema.

El propietario de la directiva de energía del dispositivo debe enviar un IRP de configuración de dispositivo para cada IRP de energía establecida por el sistema, incluso si el dispositivo ya está en el estado de alimentación del dispositivo correcto. Si el controlador suspendió previamente las operaciones de dispositivo en respuesta a un IRP de alimentación de consulta, el IRP set-power lo notifica para detener la puesta en cola de IRP y volver al funcionamiento normal para su estado de energía actual. La única excepción se produce cuando el dispositivo está en estado D3; en este caso, el controlador no necesita enviar una solicitud de IRP_MN_SET_POWER adicional para D3.