Partager via


EVT_WDF_DEVICE_D0_EXIT fonction de rappel (wdfdevice.h)

[S’applique à KMDF et UMDF]

La fonction de rappel d’événements EvtDeviceD0Exit pilote effectue des 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 vers un objet d’appareil framework.

[in] TargetState

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

Valeur de retour

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

Remarques

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

Si le pilote a inscrit un EvtDeviceD0Exit fonction de rappel, 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 lorsqu’un des éléments suivants se produit :

  • Le système et tous ses appareils sont sur le point de quitter leurs états de travail et d’entrer dans un état de faible puissance.
  • L’appareil est sur le point d’entrer un état de faible alimentation, car il est inactif, si l’appareil prend en charge l’inactivité à faible alimentation.
  • 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 souhaite supprimer l’appareil.
L’infrastructure appelle également la fonction de rappel EvtDeviceD0Exit une fois qu’un appareil a été supprimé de manière inattendue (supprimé de surprise).

Pour plus d’informations sur le moment où l’infrastructure appelle cette fonction de rappel, consultez scénarios PnP et Power Management.

Sauf si l’appareil a été supprimé par surprise, l’infrastructure appelle cette fonction de rappel immédiatement après qu’elle désactive les interruptions de l’appareil, mais avant que la puissance de l’appareil ne soit réduite 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 entre dans l’état de faible alimentation spécifié, par exemple enregistrer les 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 utilise 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 l’écrire sur le disque ou sur un autre support de stockage permanent. Toutefois, il est incorrect de vérifier WdfPowerDeviceD3Final, puis de procéder au nettoyage pour la suppression de l’appareil. Par exemple, si un appareil ayant entré l’état d’alimentation Dx en raison de l’idling out est ensuite supprimé ultérieurement, son EvtDeviceD0Exit ne sera plus appelé. Le bon endroit pour effectuer ce travail serait dans EvtDeviceReleaseHardware à la place.

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

Exigences

Exigence Valeur
plateforme cible Universel
version minimale de KMDF 1.0
version minimale de UMDF 2.0
d’en-tête wdfdevice.h (include Wdf.h)
IRQL PASSIVE_LEVEL

Voir aussi

EvtDeviceD0Entry