Partager via


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 a la valeur NULL, ce paramètre est égal à zéro.

[out, optional] OutBuffer

Pointeur vers la mémoire tampon dans 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 retournée

La routine PowerControlCallback retourne STATUS_SUCCESS si l’appel réussit. Sinon, il 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, cependant, une demande de contrôle d’alimentation est envoyée directement au pilote et n’est pas observée par les autres pilotes de périphérique dans la pile des appareils. Pendant un appel PowerControlCallback , le pilote effectue de manière 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 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 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 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.

Voir aussi

PO_FX_DEVICE

PoFxPowerControl