Condividi tramite


Arresto

Esistono tre modi per un'applicazione per arrestare computer locali o remoti:

  • arrestare il sistema
  • arrestare il sistema e riavviarlo
  • arrestare l'applicazione, arrestare e riavviare il sistema e riavviare tutte le applicazioni registrate per il riavvio

Per arrestare il sistema, usare la funzione ExitWindowsEx con il flag di EWX_SHUTDOWN. Per un esempio, vedere Come arrestare il sistema. Per arrestare e riavviare il sistema, usare il flag di EWX_REBOOT. Per riavviare tutte le applicazioni registrate per il riavvio usando la funzione RegisterApplicationRestart , usare il flag di EXW_RESTARTAPPS.

Le funzioni StartShutdown, StartSystemShutdown e StartSystemShutdownEx avviano un timer e visualizzano una finestra di dialogo che richiede all'utente di disconnettersi. Mentre questa finestra di dialogo viene visualizzata, la funzione AbortSystemShutdown può arrestare il timer e impedire all'arresto del computer. Tuttavia, se il timer scade, il computer viene arrestato. Queste funzioni possono anche riavviare il computer seguendo un'operazione di arresto. Per altre informazioni, vedere Visualizzazione della finestra di dialogo Arresto.

Notifiche di arresto

Le applicazioni con una finestra e una coda di messaggi ricevono notifiche di arresto tramite i messaggi di WM_QUERYENDSESSION e WM_ENDSESSION . Queste applicazioni devono restituire TRUE per indicare che possono essere terminate. Le applicazioni non devono bloccare l'arresto del sistema a meno che non sia assolutamente necessario. Le applicazioni devono eseguire qualsiasi pulizia necessaria durante l'elaborazione WM_ENDSESSION. Le applicazioni con dati non salvati potrebbero salvare i dati in una posizione temporanea e ripristinarla alla successiva avvio dell'applicazione. È consigliabile che le applicazioni salvano i dati e lo stato spesso; ad esempio, salvare automaticamente i dati tra operazioni di salvataggio avviate dall'utente per ridurre la quantità di dati da salvare all'arresto.

Le applicazioni console ricevono notifiche di arresto nelle routine del gestore. Per registrare un gestore della console, usare la funzione SetConsoleCtrlHandler .

Le applicazioni di servizio ricevono notifiche di arresto nelle routine del gestore. Per registrare un gestore del controllo del servizio, usare la funzione RegisterServiceCtrlHandlerEx .

Blocco arresto

Se un'applicazione deve bloccare un potenziale arresto del sistema, può chiamare la funzione ShutdownBlockReasonCreate . Il chiamante fornisce una stringa motivo che verrà visualizzata all'utente. La stringa motivo deve essere breve e chiara, fornendo all'utente le informazioni necessarie per decidere se continuare a arrestare il sistema.

Come arrestare il sistema