EVT_WDF_DEVICE_D0_EXIT fonction de rappel (wdfdevice.h)

[S’applique à KMDF et UMDF]

La fonction de rappel d’événement EvtDeviceD0Exit d’un pilote effectue les opérations nécessaires lorsque l’appareil du pilote quitte l’état d’alimentation D0.

Syntaxe

EVT_WDF_DEVICE_D0_EXIT EvtWdfDeviceD0Exit;

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

Paramètres

[in] Device

Handle d’un objet d’appareil framework.

[in] TargetState

Énumérateur WDF_POWER_DEVICE_STATE qui identifie l’état d’alimentation de l’appareil que l’appareil est sur le point d’entrer.

Valeur retournée

Si la fonction de rappel EvtDeviceD0Exit ne rencontre aucune erreur, elle doit retourner STATUS_SUCCESS ou une autre valeur de status pour laquelle NT_SUCCESS(status) est égal à TRUE. Sinon, il doit retourner une valeur status pour laquelle NT_SUCCESS(status) est false.

Remarques

Pour inscrire une fonction de rappel EvtDeviceD0Exit , un pilote doit appeler WdfDeviceInitSetPnpPowerEventCallbacks.

Si le pilote a inscrit une fonction de rappel EvtDeviceD0Exit , l’infrastructure appelle la fonction chaque fois que l’un des appareils du pilote quitte son état de fonctionnement (D0). Un appareil quitte l’état D0 lorsque l’un des éléments suivants se produit :

  • Le système et tous ses appareils sont sur le point de quitter leurs états de fonctionnement et d’entrer dans un état de faible consommation d’énergie.
  • L’appareil est sur le point d’entrer dans un état de faible consommation d’énergie, car il est inactif, si l’appareil prend en charge l’inactivité à faible consommation d’énergie.
  • Le gestionnaire Plug-and-Play tente de redistribuer les ressources matérielles du système.
  • Un utilisateur a indiqué, généralement au moyen de l’interface utilisateur d’une application, qu’il souhaitait supprimer l’appareil.
L’infrastructure appelle également la fonction de rappel EvtDeviceD0Exit après la suppression inattendue d’un appareil (suppression surprise).

Pour plus d’informations sur le moment où l’infrastructure appelle cette fonction de rappel, consultez Scénarios pnP et de gestion de l’alimentation.

À moins que l’appareil n’ait été supprimé par surprise, l’infrastructure appelle cette fonction de rappel immédiatement après avoir désactivé les interruptions de l’appareil, mais avant que l’alimentation de l’appareil ne soit réduite à partir de D0. Le paramètre TargetState identifie l’état d’alimentation de l’appareil que l’appareil est sur le point d’entrer.

La fonction de rappel EvtDeviceD0Exit doit effectuer toutes les opérations nécessaires avant que l’appareil n’entre dans l’état de faible consommation spécifié, comme l’enregistrement des informations dont le pilote aura besoin ultérieurement pour restaurer l’appareil à son état d’alimentation D0.

Si le paramètre TargetState est WdfPowerDevicePrepareForHibernation, le pilote ne doit pas arrêter l’appareil, car le système utilisera l’appareil lors de l’enregistrement de son fichier de mise en veille prolongée.

Si TargetState est WdfPowerDeviceD3Final, vous devez supposer que le système est désactivé, que l’appareil est sur le point d’être supprimé ou qu’un rééquilibrage des ressources est en cours. Si votre pilote doit enregistrer des informations, il doit les écrire sur le disque ou sur un autre support de stockage permanent. Toutefois, il est incorrect de case activée WdfPowerDeviceD3Final, puis d’effectuer un travail de nettoyage pour la suppression de l’appareil. Par exemple, si un appareil qui est entré dans l’état d’alimentation Dx en raison de la marche à l’arrêt est ensuite supprimé par surprise, son EvtDeviceD0Exit ne sera plus appelé. L’endroit approprié pour effectuer ce travail se trouve dans EvtDeviceReleaseHardware à la place.

Pour plus d’informations sur les pilotes qui fournissent cette fonction de rappel, consultez Prise en charge du PnP et de la gestion de l’alimentation dans les pilotes de fonction.

Configuration requise

Condition requise Valeur
Plateforme cible Universal
Version KMDF minimale 1.0
Version UMDF minimale 2.0
En-tête wdfdevice.h (include Wdf.h)
IRQL PASSIVE_LEVEL

Voir aussi

EvtDeviceD0Entry