PO_FX_DEVICE_POWER_NOT_REQUIRED_CALLBACK fonction de rappel (wdm.h)
La routine de rappel DevicePowerNotRequiredCallback avertit le pilote de périphérique que l’appareil n’est pas obligé de rester dans l’état d’alimentation D0.
Syntaxe
PO_FX_DEVICE_POWER_NOT_REQUIRED_CALLBACK PoFxDevicePowerNotRequiredCallback;
void PoFxDevicePowerNotRequiredCallback(
[in] PVOID Context
)
{...}
Paramètres
[in] Context
Pointeur vers le contexte de l’appareil. Le pilote de périphérique utilise ce contexte pour stocker des informations sur l’état d’alimentation actuel de l’appareil. Le pilote de périphérique a spécifié ce pointeur dans le membre DeviceContext de la structure PO_FX_DEVICE que le pilote a utilisée pour inscrire l’appareil auprès de l’infrastructure de gestion de l’alimentation (PoFx). Ce contexte est opaque pour PoFx.
Valeur de retour
None
Remarques
Lorsque PoFx appelle la routine DevicePowerNotRequiredCallback du pilote, celui-ci doit d’abord décider s’il faut lancer une transition vers un état Dx de faible puissance (en envoyant une requête IRP_MN_SET_POWER dans la pile de l’appareil) ou rester à l’état D0. Ensuite, sans attendre la fin de la transition Dx, le pilote doit appeler la routine PoFxCompleteDevicePowerNotRequired pour informer PoFx que le pilote a terminé sa réponse au rappel DevicePowerNotRequiredCallback . Le pilote peut appeler PoFxCompleteDevicePowerNotRequired avant ou après le retour de la routine DevicePowerNotRequiredCallback .
Lorsqu’un appareil est à l’état D0 et que l’état Fx ou l’état actif/inactif d’un composant de l’appareil change, PoFx évalue si l’appareil peut entrer dans un état Dx basse consommation ou doit rester à l’état D0. Si l’appareil peut entrer dans un état Dx faible consommation, PoFx appelle la routine DevicePowerNotRequiredCallback du pilote.
Si l’appareil entre dans un état Dx faible consommation en réponse à un rappel DevicePowerNotRequiredCallback , mais que PoFx détermine ultérieurement que l’appareil doit entrer dans l’état D0, PoFx appelle la routine DevicePowerRequiredCallback du pilote. En réponse à cet appel, l’appareil doit entrer l’état D0.
Exemples
Pour définir une routine de rappel DevicePowerNotRequiredCallback , vous devez d’abord fournir une déclaration de fonction qui identifie le type de routine de rappel que vous définissez. Windows fournit un ensemble de types de fonctions de rappel pour les pilotes. La déclaration d’une fonction à l’aide des types de fonction de rappel aide l’analyse du code pour les pilotes, le vérificateur de pilotes statique (SDV) et d’autres outils de vérification à la recherche d’erreurs. Il s’agit d’une exigence pour l’écriture de pilotes pour le système d’exploitation Windows.
Par exemple, pour définir une routine de rappel DevicePowerNotRequiredCallback nommée MyDevicePowerNotRequiredCallback
, utilisez le type PO_FX_DEVICE_POWER_NOT_REQUIRED_CALLBACK comme indiqué dans cet exemple de code :
PO_FX_DEVICE_POWER_NOT_REQUIRED_CALLBACK MyDevicePowerNotRequiredCallback;
Ensuite, implémentez votre routine de rappel comme suit :
_Use_decl_annotations_
VOID
MyDevicePowerNotRequiredCallback(
PVOID Context
)
{
// Function body
}
Le type de fonction PO_FX_DEVICE_POWER_NOT_REQUIRED_CALLBACK est défini dans le fichier d’en-tête Wdm.h. Pour identifier plus précisément les erreurs lorsque vous exécutez les outils d’analyse du code, veillez à ajouter l’annotation _Use_decl_annotations_
à votre définition de fonction. L’annotation _Use_decl_annotations_
garantit que les annotations appliquées au type de fonction PO_FX_DEVICE_POWER_NOT_REQUIRED_CALLBACK dans le fichier d’en-tête sont utilisées. Pour plus d’informations sur la configuration requise pour les déclarations de fonction, consultez Déclaration de fonctions à l’aide de types de rôles de fonction pour les pilotes WDM. Pour plus d’informations sur _Use_decl_annotations_
, consultez Annotating Function Behavior.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Pris en charge à partir de Windows 8. |
Plateforme cible | Desktop (Expérience utilisateur) |
En-tête | wdm.h (inclure Wudfwdm.h) |
IRQL | Appelé à IRQL <= DISPATCH_LEVEL. |