Share via


Chiamata di PoStartNextPowerIrp

A partire da Windows Vista, la chiamata a PoStartNextPowerIrp non è necessaria e una chiamata a questa routine non esegue alcuna operazione di risparmio energia. Tuttavia, in Windows Server 2003, Windows XP e Windows 2000, dopo che un driver elabora un IRP di potenza di query o un IRP di potenza impostata, il driver deve chiamare PoStartNextPowerIrp per notificare al risparmio energia che è pronto per ricevere un altro IRP di alimentazione. I driver devono chiamare PoStartNextPowerIrp mentre il percorso dello stack IRP punta al driver corrente e prima di chiamare PoCallDriver.

Un driver deve chiamare questa routine una volta per ogni IRP_MN_QUERY_POWER o IRP_MN_SET_POWER richiesta ricevuta. I driver non devono chiamare PoStartNextPowerIrp durante la gestione delle richieste di IRP_MN_WAIT_WAKE o di IRP_MN_POWER_SEQUENCE .

Quando un driver chiama PoStartNextPowerIrp, il percorso dello stack IRP corrente deve puntare al driver corrente. Come regola generale, questa chiamata viene eseguita meglio da una routine IoCompletion . PoStartNextPowerIrp deve essere chiamato prima di IoCompleteRequest, IoSkipCurrentIrpStackLocation e PoCallDriver. La chiamata delle routine nell'altro ordine potrebbe causare un deadlock di sistema.

Anche se un driver non riesce l'IRP, deve comunque chiamare PoStartNextPowerIrp per informare il risparmio energia che è pronto per gestire un altro IRP di alimentazione.

Le sezioni seguenti chiariscono quando ogni tipo di driver deve chiamare questa routine:

Chiamata di PoStartNextPowerIrp da un driver di filtro

Chiamata di PoStartNextPowerIrp da un proprietario di Criteri di risparmio energia dispositivo

Chiamata di PoStartNextPowerIrp da un driver del bus