Fermeture

Il existe trois façons pour une application d’arrêter des ordinateurs locaux ou distants :

  • arrêter le système
  • arrêtez le système et redémarrez-le
  • arrêtez l’application, arrêtez et redémarrez le système, puis redémarrez toutes les applications qui ont été inscrites pour le redémarrage

Pour arrêter le système, utilisez la fonction ExitWindowsEx avec l’indicateur EWX_SHUTDOWN. Pour obtenir un exemple, consultez Comment arrêter le système. Pour arrêter et redémarrer le système, utilisez l’indicateur EWX_REBOOT. Pour redémarrer toutes les applications qui ont été inscrites pour redémarrer à l’aide de la fonction RegisterApplicationRestart , utilisez l’indicateur EXW_RESTARTAPPS.

Les fonctions InitiateShutdown, InitiateSystemShutdown et InitiateSystemShutdownEx démarrent un minuteur et affichent une boîte de dialogue qui invite l’utilisateur à se déconnecter. Lorsque cette boîte de dialogue s’affiche, la fonction AbortSystemShutdown peut arrêter le minuteur et empêcher l’ordinateur de s’arrêter. Toutefois, si le minuteur expire, l’ordinateur est arrêté. Ces fonctions peuvent également redémarrer l’ordinateur après une opération d’arrêt. Pour plus d’informations, consultez Affichage de la boîte de dialogue Arrêter.

Notifications d’arrêt

Les applications avec une fenêtre et une file d’attente de messages reçoivent des notifications d’arrêt via les messages WM_QUERYENDSESSION et WM_ENDSESSION . Ces applications doivent retourner TRUE pour indiquer qu’elles peuvent être arrêtées. Les applications ne doivent pas bloquer l’arrêt du système, sauf si cela est absolument nécessaire. Les applications doivent effectuer tout nettoyage requis lors du traitement des WM_ENDSESSION. Les applications qui ont des données non enregistrées peuvent enregistrer les données dans un emplacement temporaire et les restaurer au prochain démarrage de l’application. Il est recommandé aux applications d’enregistrer leurs données et leur état fréquemment ; par exemple, enregistrez automatiquement des données entre les opérations d’enregistrement lancées par l’utilisateur pour réduire la quantité de données à enregistrer à l’arrêt.

Les applications console reçoivent des notifications d’arrêt dans leurs routines de gestionnaire. Pour inscrire un gestionnaire de console, utilisez la fonction SetConsoleCtrlHandler .

Les applications de service reçoivent des notifications d’arrêt dans leurs routines de gestionnaire. Pour inscrire un gestionnaire de contrôle de service, utilisez la fonction RegisterServiceCtrlHandlerEx .

Blocage de l’arrêt

Si une application doit bloquer un arrêt du système potentiel, elle peut appeler la fonction ShutdownBlockReasonCreate . L’appelant fournit une chaîne de raison qui sera affichée à l’utilisateur. La chaîne de motif doit être courte et claire, fournissant à l’utilisateur les informations nécessaires pour décider s’il faut continuer à arrêter le système.

Comment arrêter le système