Sto creando un'applicazione che mette il computer in stato di ibernazione per alcune ore o anche un'intera settimana (Utilizzo di un WaitableTimer e WaitForSingleObject).Controllare il motivo per cui il computer ha ripreso dallo stato di ibernazione
ci sono tre ragioni per cui il computer potrebbe Wake-up
- Il timer waitable è scaduto e il computer riprende come da programma.
- L'utente preme il pulsante di accensione che riprende il computer.
- Il computer si accende in modo imprevisto.
Le prime due ragioni sono perfettamente accettabili, sono ciò per cui è progettato il sistema. La terza ragione ovviamente non è così bella.
Mi piacerebbe essere in grado di distinguere tra questi tre motivi per l'accensione. C'è un modo per fare questo? Sembra qui che nel primo scenario il metodo WaitForSingleObject
debba restituire WAIT_OBJECT_0
(source). Se questo non è il caso, è lo scenario 2 o 3, ma non sono sicuro di come distinguere tra i due. Esiste un'API per verificare il motivo della ripresa dalla modalità standby?
Un'altra opzione (migliore) è proibire ad altri dispositivi/software di riattivare il computer (ad esempio eliminando lo scenario 3). Ho disattivato le funzionalità di attivazione di tutti i dispositivi che vedo quando corro powercfg -devicequery -wake_armed
(quando eseguo il comando ora restituisce NONE). Esiste un modo simile per vedere tutto il software (attivo) che ha programmato il riavvio del computer?
(Se la sua qualsiasi aiutare il computer questo software è stato progettato per una superficie di 3 Pro, con il incluso (e aggiornato) di Windows 8.1 del sistema operativo installato)
Non sono sicuro se è come premere il pulsante di accensione, ma premendo i tasti sulla tastiera si riattiva anche il computer (forse anche i clic del mouse ma non ne sono sicuro al 100%). – Deruijter
Giusto per chiarire, stai chiedendo di svegliarsi dagli stati di Hibernate (S4)? Quindi, non da stati Sleep ACPI (S3) o Standby connesso. È corretto? –
Non penso sia possibile. Non riesco a vedere nulla delle specifiche ACPI (http://acpi.info/DOWNLOADS/ACPI_5_Errata%20A.pdf) che fornisce dettagli su messaggi specifici forniti al sistema operativo dopo un evento di ibernazione come la causa della risurrezione. – Dai