PO_FX_POWER_CONTROL_CALLBACK fonction de rappel (wdm.h)
La routine de rappel PowerControlCallback effectue une opération de contrôle d’alimentation demandée par l’infrastructure de gestion de l’alimentation (PoFx).
Syntaxe
PO_FX_POWER_CONTROL_CALLBACK PoFxPowerControlCallback;
NTSTATUS PoFxPowerControlCallback(
PVOID DeviceContext,
[in] LPCGUID PowerControlCode,
[in, optional] PVOID InBuffer,
[in] SIZE_T InBufferSize,
[out, optional] PVOID OutBuffer,
[in] SIZE_T OutBufferSize,
[out, optional] PSIZE_T BytesReturned
)
{...}
Paramètres
DeviceContext
[in] PowerControlCode
Pointeur vers le code de contrôle d’alimentation. Ce code est une valeur GUID qui spécifie l’opération demandée.
[in, optional] InBuffer
Pointeur vers la mémoire tampon qui contient les données d’entrée de l’opération. Le format des données de cette mémoire tampon dépend du code de contrôle d’alimentation spécifié par le paramètre PowerControlCode. Le paramètre InBuffer est facultatif et peut être spécifié comme NULL si l’opération spécifiée ne nécessite aucune donnée d’entrée.
[in] InBufferSize
Taille, en octets, de la mémoire tampon d’entrée pointée par le paramètre InBuffer. Si InBuffer est NULL, ce paramètre est égal à zéro.
[out, optional] OutBuffer
Pointeur vers la mémoire tampon vers laquelle la routine de rappel écrit les données de sortie de l’opération. Le format des données de cette mémoire tampon dépend du code de contrôle d’alimentation spécifié par le paramètre PowerControlCode. Le paramètre OutBuffer est facultatif et peut être spécifié comme NULL si l’opération spécifiée ne produit aucune donnée de sortie.
[in] OutBufferSize
Taille, en octets, de la mémoire tampon de sortie pointée par le paramètre OutBuffer. Si OutBuffer a la valeur NULL, ce paramètre est égal à zéro.
[out, optional] BytesReturned
Pointeur vers un emplacement dans lequel la routine écrit le nombre d’octets de données qui ont été écrits dans la mémoire tampon pointée par OutBuffer. Le nombre d’octets écrits doit être inférieur ou égal à OutBufferSize. Ce paramètre est facultatif et peut être spécifié comme NULL si l’appelant n’a pas besoin de savoir combien d’octets ont été écrits dans la mémoire tampon de sortie.
Valeur de retour
La routine PowerControlCallback retourne STATUS_SUCCESS si l’appel réussit. Sinon, elle retourne un code d’erreur approprié.
Remarques
PoFx appelle cette routine pour envoyer une demande de contrôle d’alimentation directement au pilote de périphérique. Une demande de contrôle d’alimentation est similaire à une demande de contrôle d’E/S (IOCTL). Contrairement à un IOCTL, toutefois, une demande de contrôle d’alimentation est envoyée directement au pilote et n’est pas observée par d’autres pilotes de périphérique dans la pile d’appareils. Pendant un appel PowerControlCallback, le pilote effectue de façon synchrone l’opération demandée.
Cette routine est facultative. Un pilote de périphérique qui ne prend pas en charge les opérations de contrôle d’alimentation n’est pas nécessaire pour implémenter une routine PowerControlCallback.
Le pilote de périphérique peut appeler la routine PoFxPowerControl pour envoyer une demande de contrôle d’alimentation à PoFx.
Pour plus d’informations sur les demandes de contrôle d’alimentation, consultez PoFxPowerControl.
Exemples
Pour définir une routine de rappel PowerControlCallback, 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 fonctions de rappel permet d'Analyse du code pour les pilotes, static Driver Verifier (SDV) et d’autres outils de vérification recherchent des erreurs, et il est nécessaire d’écrire des pilotes pour le système d’exploitation Windows.
Par exemple, pour définir une routine de rappel PowerControlCallback nommée MyPowerControlCallback
, utilisez le type PO_FX_POWER_CONTROL_CALLBACK comme indiqué dans cet exemple de code :
PO_FX_POWER_CONTROL_CALLBACK MyPowerControlCallback;
Ensuite, implémentez votre routine de rappel comme suit :
_Use_decl_annotations_
NTSTATUS
MyPowerControlCallback(
PVOID Context,
LPCGUID PowerControlCode,
PVOID InBuffer,
SIZE_T InBufferSize,
PVOID OutBuffer,
SIZE_T OutBufferSize,
PSIZE_T BytesReturned
)
{
// Function body
}
Le type de fonction PO_FX_POWER_CONTROL_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_POWER_CONTROL_CALLBACK dans le fichier d’en-tête sont utilisées. Pour plus d’informations sur les exigences relatives aux 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 annoter le comportement de la fonction.
Exigences
Exigence | Valeur |
---|---|
client minimum pris en charge | Prise en charge à partir de Windows 8. |
plateforme cible | Bureau |
d’en-tête | wdm.h (include Wudfwdm.h) |
IRQL | Appelé au <IRQL = DISPATCH_LEVEL. |