Condividi tramite


Errore di un Query-Power IRP di sistema in un filtro o in un driver di funzione

Un filtro o un driver di funzione (che non è il proprietario dei criteri di risparmio energia per un dispositivo) può non riuscire una richiesta di IRP_MN_QUERY_POWER se una delle condizioni seguenti è vera:

  • Il dispositivo è abilitato per la riattivazione e lo stato di alimentazione del sistema richiesto è meno alimentato rispetto al valore di SystemWake, che specifica lo stato meno alimentato da cui il dispositivo può riattivare il sistema. Ad esempio, un dispositivo in grado di riattivare il sistema da S2 ma non da S3 non riuscirà a eseguire una query per S3, ma riuscirà a eseguire una query per S2.

  • L'immissione di uno stato di alimentazione del dispositivo che corrisponde allo stato richiesto forza il driver ad abbandonare un'operazione che perderebbe i dati, ad esempio una connessione modem aperta. Un driver raramente non riuscirà a eseguire una query per questo motivo; nella maggior parte dei casi, l'applicazione gestisce tali casi.

Per non riuscire una richiesta di IRP_MN_QUERY_POWER per uno stato di alimentazione del sistema, un driver deve seguire questa procedura:

  1. Chiamare PoStartNextPowerIrp per indicare che il driver è pronto per gestire l'IRP di alimentazione successiva. (Solo Windows Server 2003, Windows XP e Windows 2000)

  2. Impostare Irp-IoStatus.Status> su uno stato di errore e chiamare IoCompleteRequest, specificando IO_NO_INCREMENT. Non passare ulteriormente l'IRP nello stack di dispositivi.

  3. Chiama IoReleaseRemoveLock per rilasciare il blocco acquisito in precedenza.

  4. Restituisce uno stato di errore dalla routine DispatchPower .