Differenza tra lo spegnimento avviato dal software e l'utilizzo del pulsante di accensione?


1

È possibile arrestare Windows tramite software, ovvero facendo clic da qualche parte (pulsante Start / Shutdown) o utilizzando strumenti come shutdown.exe ecc.

È anche possibile spegnere Windows premendo il pulsante di accensione sul computer.

Qual è la differenza? Riferimenti, fatti concreti?

Note / Chiarimenti / Sfondi:

  • Mi è sempre sembrato che premere il pulsante di accensione rendesse Windows molto più veloce, specialmente con Windows XP: i computer nella nostra rete aziendale che eseguono XP spesso impiegavano un minuto per spegnersi via software, ma sono sempre spenti dopo alcuni secondi quando utilizzando il pulsante di accensione.
  • So che è possibile configurare cosa dovrebbe fare Windows quando si preme il pulsante di accensione.
  • Sto parlando di premere il pulsante di accensione per un breve periodo di tempo , non di tenerlo premuto per alcuni secondi.
  • Una specifica ACPI , pagina 28: "Ciò che il sistema fa con questa richiesta dipende dai problemi dei criteri derivati ​​dalle preferenze dell'utente, dalle richieste di funzione dell'utente e dai dati dell'applicazione". Ma cosa fa Windows?
  • Ho trovato molte congetture e ipotesi durante la ricerca in Internet, ma non ho trovato fatti concreti. Per favore, non fornire più ipotesi, grazie.

1
@pnuts: Windows in generale. Non sto pensando a un'applicazione specifica.
Martin,

Risposte:


5

È lo stesso.

Come hai detto, puoi forzare uno spegnimento tenendo premuto il pulsante di accensione più a lungo (circa 4 secondi), ma questo sta letteralmente riducendo la potenza. Un arresto avviato da ACPI è uguale a quello che si chiama tramite il software. In entrambi i modi, tutte le applicazioni in esecuzione sulla macchina devono essere informate dell'arresto in sospeso, (possibilmente interromperlo, a seconda della versione di Windows), e chiudere se stessi e tutti i file che hanno aperto con grazia. Tutto ciò richiede tempo.

Fondamentalmente, ciò che rende possibile la magia in entrambi i casi è una chiamata alla ExitWindowsExfunzione, che fa parte dell'API di Windows utilizzata dai programmatori. * Se si specifica il EWX_POWEROFFflag, il sistema viene spento e l'alimentazione viene spenta. È anche possibile chiamare quella funzione con il EWX_FORCEflag, che farà esattamente ciò che sembra: forzare un arresto senza dare alle applicazioni in esecuzione la possibilità di ritardarlo o annullarlo. Se lo fai, probabilmente lo spegnimento avverrà più velocemente ma non sarà un arresto completamente "pulito" ed è quindi pericoloso.

La differenza di comportamento che stai vedendo è probabilmente dovuta al modo in cui viene avviato l'arresto del software. Ad esempio, quando si esegue shutdown.exe, è possibile indicare un valore di timeout per quando deve essere avviata la richiesta di arresto. Durante questo periodo, l'arresto in sospeso può essere annullato eseguendo shutdown.exenuovamente con il /aflag (per interrompere un arresto in sospeso). 60 secondi è un valore piuttosto comune per questo periodo di timeout.

Il resto della differenza è probabilmente solo percettivo.

* Il fatto che Windows sia un sistema operativo multiutente può rendere le cose un po 'più complicate. Ma questo va oltre il punto qui. Qualsiasi altro metodo per avviare uno spegnimento (ad es. InitiateSystemShutdown) Si comporterà in modo simile.


OK. Hai dei riferimenti che la pressione del pulsante di accensione chiama in modo efficace ExitWindowsEx, possibilmente con il EWX_FORCEflag?
Martin,

1
Ho osservato che a volte quando si seleziona l'arresto del pulsante di Windows (su Vista), premendo (ma non tenendo premuto) il pulsante di accensione compirà un arresto. (Altre volte no.)
Daniel R Hicks

@DanielRHicks: questo potrebbe essere un EWX_FORCEo EWX_FORCEIFHUNGflag.
Martin,

È lo stesso ... tranne quando non lo è. Per gentile concessione di quello che sembra essere un software di terze parti difettoso, ho 4 Win8.1 box che si spengono completamente in modo diverso tramite l'interruttore di alimentazione rispetto al menu - vedi questa domanda
omatai

2

Quando si preme il pulsante di accensione, al sistema viene inviato un segnale ACPI che indica che il pulsante di accensione è stato premuto. Ciò che il sistema fa in risposta a questo segnale è determinato dalle impostazioni del sistema. Per Windows, il sistema può essere configurato per l'arresto, la sospensione o l'ibernazione quando si preme il pulsante di accensione.

In ogni caso, il sistema operativo risponde alla pressione del pulsante di accensione e reagisce essenzialmente nello stesso modo in cui si è richiesto al sistema di arrestare, mettere in pausa o ibernare i menu o in modo programmatico.


"reagisce essenzialmente allo stesso modo" - come ho scritto, sono abbastanza sicuro che almeno XP non lo faccia. Tuttavia, dove è documentato?
Martin,

2
@Martin: Nel caso che hai citato, è probabile che il sistema sia configurato per dormire o ibernare piuttosto che spegnersi quando viene premuto il pulsante di accensione. Questo è spesso più veloce di un arresto completo.
bwDraco,

Err ... Conosco la differenza tra un arresto e un sonno o un letargo :) È stato sicuramente / è un arresto.
Martin,

Non so cosa dire, quindi. Non dovrebbe esserci alcuna differenza tra la pressione del pulsante di accensione per comandare lo spegnimento del sistema e l'uso dei menu per fare la stessa cosa.
bwDraco,

Forse hai ragione e io ho torto e in effetti non c'è differenza, ma è quello su cui vorrei sapere alcuni fatti concreti.
Martin,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.