Partager via


Appel de PoStartNextPowerIrp

À compter de Windows Vista, l’appel de PoStartNextPowerIrp n’est pas obligatoire et un appel à cette routine n’effectue aucune opération de gestion de l’alimentation. Toutefois, dans Windows Server 2003, Windows XP et Windows 2000, une fois qu’un pilote traite un IRP de puissance de requête ou un IRP de puissance définie, le pilote doit appeler PoStartNextPowerIrp pour informer le gestionnaire d’alimentation qu’il est prêt à recevoir un autre IRP d’alimentation. Les pilotes doivent appeler PoStartNextPowerIrp alors que l’emplacement de la pile IRP pointe vers le pilote actuel et avant d’appeler PoCallDriver.

Un pilote doit appeler cette routine une fois pour chaque IRP_MN_QUERY_POWER ou IRP_MN_SET_POWER demande qu’il reçoit. Les pilotes n’ont pas besoin d’appeler PoStartNextPowerIrp lors de la gestion des demandes IRP_MN_WAIT_WAKE ou IRP_MN_POWER_SEQUENCE .

Lorsqu’un pilote appelle PoStartNextPowerIrp, l’emplacement actuel de la pile IRP doit pointer vers le pilote actuel. En règle générale, il est préférable d’effectuer cet appel à partir d’une routine IoCompletion . PoStartNextPowerIrp doit être appelé avant IoCompleteRequest, IoSkipCurrentIrpStackLocation et PoCallDriver. L’appel des routines dans l’autre ordre peut entraîner un blocage du système.

Même si un pilote échoue à l’IRP, il doit néanmoins appeler PoStartNextPowerIrp pour informer le gestionnaire d’alimentation qu’il est prêt à gérer un autre IRP d’alimentation.

Les sections suivantes précisent quand chaque type de pilote doit appeler cette routine :

Appel de PoStartNextPowerIrp à partir d’un pilote de filtre

Appel de PoStartNextPowerIrp à partir d’un propriétaire de stratégie d’alimentation de l’appareil

Appel de PoStartNextPowerIrp à partir d’un pilote de bus