EVT_WDF_DEVICE_D0_EXIT función de devolución de llamada (wdfdevice.h)

[Se aplica a KMDF y UMDF]

La función de devolución de llamada de evento EvtDeviceD0Exit de un controlador realiza operaciones necesarias cuando el dispositivo del controlador deja el estado de alimentación D0.

Sintaxis

EVT_WDF_DEVICE_D0_EXIT EvtWdfDeviceD0Exit;

NTSTATUS EvtWdfDeviceD0Exit(
  [in] WDFDEVICE Device,
  [in] WDF_POWER_DEVICE_STATE TargetState
)
{...}

Parámetros

[in] Device

Identificador de un objeto de dispositivo de marco.

[in] TargetState

Enumerador con tipo WDF_POWER_DEVICE_STATE que identifica el estado de alimentación del dispositivo que el dispositivo está a punto de entrar.

Valor devuelto

Si la función de devolución de llamada EvtDeviceD0Exit no encuentra ningún error, debe devolver STATUS_SUCCESS u otro valor de estado para el que NT_SUCCESS(status) sea TRUE. De lo contrario, debe devolver un valor de estado para el que NT_SUCCESS(status) es igual a FALSE.

Comentarios

Para registrar una función de devolución de llamada EvtDeviceD0Exit , un controlador debe llamar a WdfDeviceInitSetPnpPowerEventCallbacks.

Si el controlador ha registrado una función de devolución de llamada EvtDeviceD0Exit , el marco llama a la función cada vez que uno de los dispositivos del controlador deja su estado de trabajo (D0). Un dispositivo deja el estado D0 cuando se produce una de las siguientes acciones:

  • El sistema y todos sus dispositivos están a punto de dejar sus estados de trabajo y entrar en un estado de bajo consumo.
  • El dispositivo está a punto de entrar en un estado de bajo consumo porque está inactivo, si el dispositivo admite inactividad de bajo consumo.
  • El administrador de Plug and Play está intentando redistribuir los recursos de hardware del sistema.
  • Un usuario ha indicado, normalmente por medio de la interfaz de usuario de una aplicación, que quiere quitar el dispositivo.
El marco también llama a la función de devolución de llamada EvtDeviceD0Exit después de que un dispositivo se haya quitado inesperadamente (se ha quitado sorpresa).

Para obtener más información sobre cuándo el marco llama a esta función de devolución de llamada, consulte Escenarios de administración de energía y PnP.

A menos que el dispositivo se haya quitado por sorpresa, el marco llama a esta función de devolución de llamada inmediatamente después de deshabilitar las interrupciones del dispositivo, pero antes de que la alimentación del dispositivo se reduzca de D0. El parámetro TargetState identifica el estado de alimentación del dispositivo que el dispositivo está a punto de especificar.

La función de devolución de llamada EvtDeviceD0Exit debe realizar las operaciones necesarias antes de que el dispositivo entre en el estado especificado de baja potencia, como guardar cualquier información que el controlador necesite más adelante para restaurar el dispositivo a su estado de alimentación D0.

Si el parámetro TargetState es WdfPowerDevicePrepareForHibernation, el controlador no debe apagar el dispositivo, ya que el sistema usará el dispositivo al guardar su archivo de hibernación.

Si TargetState es WdfPowerDeviceD3Final, debe suponer que el sistema se está desactivando, el dispositivo está a punto de quitarse o que hay un reequilibrio de recursos en curso. Si el controlador debe guardar información, debe escribirla en el disco o en algún otro medio de almacenamiento permanente. Sin embargo, es incorrecto comprobar WdfPowerDeviceD3Final y, a continuación, realizar el trabajo de limpieza para la eliminación de dispositivos. Por ejemplo, si un dispositivo que ha entrado en estado de energía Dx debido a que se ha quitado después la sorpresa, su EvtDeviceD0Exit no se llamará de nuevo. El lugar correcto para realizar este trabajo sería en EvtDeviceReleaseHardware en su lugar.

Para obtener más información sobre los controladores que proporcionan esta función de devolución de llamada, consulte Compatibilidad con PnP y administración de energía en controladores de función.

Requisitos

Requisito Value
Plataforma de destino Universal
Versión mínima de KMDF 1.0
Versión mínima de UMDF 2.0
Encabezado wdfdevice.h (incluir Wdf.h)
IRQL PASSIVE_LEVEL

Consulte también

EvtDeviceD0Entry