Méthode IPowerPolicyCallbackWakeFromS0 ::OnArmWakeFromS0 (wudfddi.h)

[Avertissement : UMDF 2 est la dernière version d’UMDF et remplace UMDF 1. Tous les nouveaux pilotes UMDF doivent être écrits à l’aide d’UMDF 2. Aucune nouvelle fonctionnalité n’est ajoutée à UMDF 1 et la prise en charge d’UMDF 1 est limitée sur les versions plus récentes de Windows 10. Les pilotes Windows universels doivent utiliser UMDF 2. Pour plus d’informations, consultez Prise en main avec UMDF.]

Les bras de la fonction de rappel OnArmWakeFromS0 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 de faible consommation, si le système reste dans l’état de fonctionnement du système (S0).

Syntaxe

HRESULT OnArmWakeFromS0(
  [in] IWDFDevice *pWdfDevice
);

Paramètres

[in] pWdfDevice

Pointeur vers l’interface IWDFDevice de l’objet de périphérique qui représente l’un des périphériques du pilote.

Valeur retournée

Si l’opération réussit, la fonction de rappel OnArmWakeFromS0 doit retourner S_OK ou une autre valeur de status pour laquelle SUCCEEDED(status) est égal à TRUE. Sinon, elle doit retourner une valeur status pour laquelle SUCCEEDED(status) est égal àFALSE.

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

Remarques

Votre pilote doit fournir une fonction de rappel OnArmWakeFromS0 si le pilote prend en charge l’interface IPowerPolicyCallbackWakeFromS0 .

La fonction de rappel OnArmWakeFromS0 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 sortie de veille sur le bus. Le pilote de bus en mode noyau gère des 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 OnArmWakeFromS0 , l’infrastructure l’appelle alors que l’appareil est toujours dans l’état d’alimentation du périphérique D0, avant que le pilote de bus baisse l’état d’alimentation de l’appareil, mais une fois que le framework a envoyé une 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 durée prédéfinie.
  2. Le framework appelle la fonction de rappel OnArmWakeFromS0 du pilote.
  3. L’infrastructure demande au pilote pour le 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 IPnpCallback ::OnD0Exit 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 dans UMDF.

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

  • Périphérique USB qui prend en charge la « suspension sélective ».
  • Ne peut pas être mis 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 sortie de veille.
Si votre appareil prend en charge la « suspension sélective » USB et si votre pilote spécifie IdleUsbSelectiveSuspend lorsqu’il appelle IWDFDevice2 ::AssignS0IdleSettings, le framework envoie une demande de « suspension sélective » au pilote de bus USB quand le périphérique a été inactif pendant une durée prédéfinie.

Pour plus d’informations sur cette fonction de rappel, consultez Prise en charge des Power-Down inactifs dans les pilotes basés sur UMDF.

Configuration requise

Condition requise Valeur
Fin de la prise en charge Non disponible dans UMDF 2.0 et versions ultérieures.
Plateforme cible Desktop (Expérience utilisateur)
Version UMDF minimale 1,9
En-tête wudfddi.h (inclure Wudfddi.h)

Voir aussi

IPowerPolicyCallbackWakeFromS0

IPowerPolicyCallbackWakeFroms0 ::OnDisarmWakeFroms0

IPowerPolicyCallbackWakeFroms0 ::OnWakeFroms0Triggered