Partager via


EVT_WDF_DEVICE_ARM_WAKE_FROM_S0 fonction de rappel (wdfdevice.h)

[S’applique à KMDF et UMDF]

Les bras de fonction de rappel d’événement EvtDeviceArmWakeFromS0 d’un pilote (c’est-à-dire active) un appareil afin qu’il puisse déclencher un signal de veille alors qu’il est dans un état d’appareil à faible consommation d’énergie, si le système reste à l’état de fonctionnement du système (S0).

Syntaxe

EVT_WDF_DEVICE_ARM_WAKE_FROM_S0 EvtWdfDeviceArmWakeFromS0;

NTSTATUS EvtWdfDeviceArmWakeFromS0(
  [in] WDFDEVICE Device
)
{...}

Paramètres

[in] Device

Handle d’un objet d’appareil framework.

Valeur retournée

Si l’opération réussit, la fonction de rappel EvtDeviceArmWakeFromS0 doit retourner STATUS_SUCCESS ou une autre valeur status pour laquelle NT_SUCCESS(status) est égal à TRUE. Sinon, il doit retourner une valeur status pour laquelle NT_SUCCESS(status) est false.

Si NT_SUCCESS(status) est égal à FALSE, l’infrastructure n’appelle pas la fonction de rappel EvtDeviceDisarmWakeFromS0 du pilote. (L’infrastructure ne signale pas une défaillance d’appareil au gestionnaire PnP.)

Remarques

Pour inscrire une fonction de rappel EvtDeviceArmWakeFromS0 , un pilote doit appeler WdfDeviceInitSetPowerPolicyEventCallbacks. En outre, le pilote doit définir IdleCanWakeFromS0 dans le membre IdleCaps de sa structure WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS .

La fonction de rappel EvtDeviceArmWakeFromS0 gère les opérations spécifiques à l’appareil qui sont nécessaires pour permettre à l’appareil de détecter un événement externe qui déclenche un signal de veille sur le bus. La fonction de rappel EvtDeviceEnableWakeAtBus du pilote de bus gère les opérations spécifiques au bus, telles que l’activation du signal PME (Power Management Event) du bus PCI.

Si le pilote a inscrit une fonction de rappel EvtDeviceArmWakeFromS0 , l’infrastructure l’appelle alors que l’appareil est toujours à l’état d’alimentation D0, avant que le pilote de bus ne réduise l’état d’alimentation de l’appareil, mais après que l’infrastructure a envoyé un IRP d’attente/veille pour le compte du pilote.

Le processus se produit dans l’ordre suivant :

  1. L’infrastructure détermine que l’appareil a été inactif pendant une période prédéfinie.
  2. Le framework appelle la fonction de rappel EvtDeviceArmWakeFromS0 du pilote.
  3. L’infrastructure demande au pilote du bus de l’appareil de réduire l’alimentation de l’appareil.
Immédiatement avant que votre appareil n’entre dans un état de faible consommation, l’infrastructure appelle la fonction de rappel EvtDeviceD0Exit de votre pilote.

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.

Vous n’avez pas besoin de fournir une fonction de rappel EvtDeviceArmWakeFromS0 si votre appareil :

  • Il s’agit d’un périphérique USB qui prend en charge la « suspension sélective ».
  • Impossible de mettre hors tension tant que le système reste entièrement alimenté.
  • Ne nécessite pas d’opérations matérielles spéciales qui permettent à l’appareil de déclencher un signal de veille.
Si votre appareil prend en charge la « suspension sélective » USB et si votre pilote définit IdleUsbSelectiveSuspend dans le membre IdleCaps de sa structure WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS , l’infrastructure envoie une demande de « suspension sélective » au pilote de bus USB lorsque l’appareil a été inactif pendant une période prédéfinie.

Pour plus d’informations sur cette fonction de rappel, consultez Prise en charge de l’arrêt inactif.

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

EvtDeviceArmWakeFromSx

EvtDeviceDisarmWakeFromS0