Gestione delle IRP_MN_QUERY_POWER per gli stati di alimentazione del sistema
Il risparmio energia invia un IRP di alimentazione con il codice IRP secondario IRP_MN_QUERY_POWER e SystemPowerState in Parameters.Power.Type per determinare se può passare in modo sicuro a uno stato di alimentazione del sistema specificato (S1-S5) e per consentire ai driver di prepararsi a tale modifica.
Quando possibile, il risparmio energia esegue query prima di inviare un IRP_MN_SET_POWER che richiede uno stato inferiore (meno alimentato). Tuttavia, in caso di errore della batteria o di una perdita imminente di alimentazione, il risparmio energia invia l'IRP di alimentazione set-power senza prima eseguire query. Il risparmio energia non invia mai una query prima di inviare un IRP per impostare il sistema nello stato di lavoro (S0).
Per informazioni sul modo in cui un proprietario dei criteri di risparmio energia per un dispositivo gestisce le richieste di potenza delle query di sistema, vedere Gestione di un'Query-Power IRP in un proprietario di Power Policy del dispositivo.
Per informazioni sul modo in cui i driver (che non sono il proprietario dei criteri di risparmio energia per un dispositivo) gestiscono le richieste di alimentazione delle query di sistema, vedere quanto segue:
Gestione di un Query-Power IRP di sistema in un filtro o in un driver di funzione
Errore di un Query-Power IRP di sistema in un filtro o in un driver di funzione
Gestione di un Query-Power IRP di sistema in un driver del bus
Si noti che un driver non deve mai inviare un dispositivo IRP_MN_SET_POWER richiesta in risposta a una query di sistema; richiede tale IRP solo dopo che riceve una richiesta di alimentazione del sistema.
Poiché il risparmio energia invia l'IRP di query di sistema a ogni stack di dispositivi nel sistema, è possibile che un driver per un dispositivo non riesca a eseguire la query mentre i driver per altri dispositivi lo completano correttamente. A partire da Windows Vista, una modifica dello stato di alimentazione del sistema a uno stato di sospensione è una modifica dello stato di alimentazione critica. Anche se un driver non riesce un IRP di power power di sistema, il risparmio energia in Windows Vista potrebbe comunque modificare lo stato di alimentazione del sistema in uno stato di sospensione. È anche possibile che una batteria scada mentre una query è attiva, richiedendo un arresto immediato. Di conseguenza, dopo una query IRP, i driver devono essere preparati a ricevere uno dei seguenti irP di alimentazione:
Un IRP_MN_SET_POWER allo stato sottoposto a query
Un IRP_MN_SET_POWER a uno stato di alimentazione diverso
Un IRP_MN_SET_POWER allo stato corrente dell'alimentazione
Un IRP_MN_QUERY_POWER a qualsiasi stato
In genere, tuttavia, un driver riceve un IRP di alimentazione del sistema dopo una query di sistema IRP. Indipendentemente da ciò, un driver deve essere pronto per modificare lo stato di alimentazione del sistema anche se il driver non riesce un IRP di potenza della query.