Condividi tramite


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.