Share via


Gestione di un Set-Power IRP di sistema in un proprietario di Criteri di risparmio energia dispositivo

In risposta a un IRP di alimentazione del sistema, il proprietario dei criteri di alimentazione per uno stack di dispositivi è responsabile dell'inserimento dello stack di dispositivi in uno stato di alimentazione del dispositivo appropriato.

Come regola generale, quando un proprietario dei criteri di risparmio energia del dispositivo riceve un IRP_MN_SET_POWER per uno stato di alimentazione del sistema, deve rispondere passando l'IRP di alimentazione del sistema nello stack di dispositivi. Un proprietario dei criteri di risparmio energia del dispositivo deve anche rispondere inviando lo stack di dispositivi IRP_MN_SET_POWER per uno stato di alimentazione del dispositivo corrispondente in una routine IoCompletion . Dopo che tutti i driver nello stack hanno completato l'IRP per il set di dispositivi, il proprietario dei criteri di alimentazione del dispositivo completa l'IRP di alimentazione del sistema.

Tuttavia, per migliorare le prestazioni di ripresa del sistema, i proprietari di energia dei dispositivi per i dispositivi che non dispongono di dispositivi figlio devono usare un approccio diverso per ridurre il tempo necessario a un sistema per tornare allo stato di lavoro S0 da uno stato di sospensione. In questo caso, in risposta a un IRP di alimentazione del sistema che restituisce un sistema allo stato di lavoro S0, i proprietari dei criteri di risparmio energia del dispositivo devono eseguire la sequenza di operazioni seguente:

  1. Dopo aver ricevuto un IRP_MN_SET_POWER IRP per lo stato di alimentazione del sistema S0 nella routine DispatchPower del driver, impostare una routine IoCompletion per L'IRP e passare l'IRP verso il basso nello stack.

  2. Nella routine IoCompletion impostata nel passaggio (1), richiedere un IRP_MN_SET_POWER IRP per lo stato di alimentazione del dispositivo corrispondente e quindi completare immediatamente l'IRP di alimentazione del sistema. Il driver non deve attendere il completamento dei runtime di integrazione di alimentazione del dispositivo prima di completare l'IRP di alimentazione del sistema. La routine IoCompletion viene eseguita dopo che tutti i driver di livello inferiore hanno completato il set-power IRP di sistema e l'IRP del set di sistema viene passato all'oggetto dispositivo funzionale del driver.

  3. Eseguire qualsiasi inizializzazione specifica del dispositivo richiesta.

  4. Completare l'IRP set di potenza del dispositivo inviato nel passaggio (2).

  5. Elaborare le richieste di I/O accodate quando il dispositivo era in stato di sospensione del dispositivo.

Il gestore di alimentazione del kernel ha un set limitato di code di invio IRP e deve notificare rapidamente a tutti i dispositivi nel sistema il ritorno allo stato di lavoro del sistema S0. I driver che non riescono a completare l'IRP di alimentazione del sistema il più rapidamente possibile impediscono ad altri dispositivi di ottenere il proprio IRP di alimentazione del sistema, che può influire negativamente sulle prestazioni complessive del sistema durante le transizioni di stato di alimentazione del sistema.

Per altri dettagli sulla gestione dei runtime di integrazione di set di alimentazione del sistema, vedere quanto segue:

Determinazione dello stato di alimentazione del dispositivo corretto

Invio di un dispositivo Set-Power IRP in risposta a un Set-Power IRP di sistema