Fonction RmShutdown (restartmanager.h)

Lance l’arrêt des applications. Cette fonction ne peut être appelée qu’à partir du programme d’installation qui a démarré la session Restart Manager à l’aide de la fonction RmStartSession .

Syntaxe

DWORD RmShutdown(
  [in]           DWORD                    dwSessionHandle,
  [in]           ULONG                    lActionFlags,
  [in, optional] RM_WRITE_STATUS_CALLBACK fnStatus
);

Paramètres

[in] dwSessionHandle

Handle pour une session du Gestionnaire de redémarrage existante.

[in] lActionFlags

Une ou plusieurs options RM_SHUTDOWN_TYPE qui configurent l’arrêt des composants. Les valeurs suivantes peuvent être combinées par un opérateur OR pour spécifier que les applications et services qui ne répondent pas doivent être forcés de s’arrêter si, et seulement si, toutes les applications ont été inscrites pour le redémarrage.

Valeur Signification
RmForceShutdown
0x1
Forcez les applications et les services qui ne répondent pas à s’arrêter après le délai d’expiration. Une application qui ne répond pas à une demande d’arrêt est forcée de s’arrêter dans les 30 secondes. Un service qui ne répond pas à une demande d’arrêt est forcé de s’arrêter après 20 secondes.
RmShutdownOnlyRegistered
0x10
Arrêtez les applications si et uniquement si toutes les applications ont été inscrites pour redémarrer à l’aide de la fonction RegisterApplicationRestart . Si des processus ou services ne peuvent pas être redémarrés, aucun processus ou service n’est arrêté.

[in, optional] fnStatus

Pointeur vers une fonction RM_WRITE_STATUS_CALLBACK utilisée pour communiquer des status détaillées pendant l’exécution de cette fonction. Si la valeur est NULL, aucune status n’est fournie.

Valeur retournée

Il s’agit de l’erreur la plus récente reçue. La fonction peut retourner l’un des codes d’erreur système définis dans Winerror.h.

Valeur Signification
ERROR_SUCCESS
0
Toutes les opérations d’arrêt, de redémarrage et de rappel ont été effectuées avec succès.
ERROR_FAIL_NOACTION_REBOOT
350
Aucune action d’arrêt n’a été effectuée. Un ou plusieurs processus ou services nécessitent un redémarrage du système pour être arrêté. Ce code d’erreur est retourné lorsque le Gestionnaire de redémarrage détecte qu’un redémarrage du système est nécessaire avant d’arrêter une application.
ERROR_FAIL_SHUTDOWN
351
Certaines applications n’ont pas pu être arrêtées. Les appStatus des structures RM_PROCESS_INFO retournées par la fonction RmGetList contiennent des informations status mises à jour.
ERROR_CANCELLED
1223
Cette valeur d’erreur est retournée par la fonction RmShutdown lorsque la demande d’annulation d’une opération réussit.
ERROR_SEM_TIMEOUT
121
Une fonction Restart Manager n’a pas pu obtenir un mutex d’écriture dans le registre dans le délai imparti. Un redémarrage du système est recommandé, car l’utilisation ultérieure du Gestionnaire de redémarrage risque d’échouer.
ERROR_BAD_ARGUMENTS
160
Un ou plusieurs arguments sont incorrects. Cette valeur d’erreur est retournée par la fonction Restart Manager si un pointeur NULL ou 0 est passé dans un paramètre qui nécessite une valeur non null et une valeur non nulle.
ERROR_WRITE_FAULT
29
Une opération n’a pas pu lire ou écrire dans le Registre.
ERROR_OUTOFMEMORY
14
Une opération de redémarrage du Gestionnaire n’a pas pu être effectuée, car la mémoire disponible est insuffisante.
ERROR_INVALID_HANDLE
6
Il n’existe aucune session restart Manager pour le handle fourni.

Remarques

La fonction RmShutdown appelle RmGetList et met à jour la liste des processus qui utilisent actuellement des ressources inscrites avant de tenter d’arrêter les processus. La fonction RmShutdown tente ensuite d’arrêter les processus à l’aide des ressources inscrites dans la liste la plus actuelle. La fonction RmShutdown met à jour le membre AppStatus des structures RM_PROCESS_INFO retournées par la fonction RmGetList avec des informations détaillées status.

Le Gestionnaire de redémarrage respecte les privilèges qui séparent différentes sessions utilisateur ou terminal. Un programme d’installation qui s’exécute en tant que service avec des privilèges LocalSystem ne peut pas arrêter ou redémarrer des applications dans une autre session utilisateur ou terminal. Les programmes d’installation doivent implémenter des méthodes personnalisées pour arrêter et redémarrer les applications qui s’exécutent dans d’autres sessions. Une méthode consiste à démarrer un nouveau processus d’installation dans l’autre session pour effectuer des opérations d’arrêt et de redémarrage.

Les programmes d’installation doivent toujours redémarrer l’application et les services à l’aide de la fonction RmRestart , même lorsque la fonction RmShutdown retourne une erreur indiquant que toutes les applications et services ne peuvent pas être arrêtés.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows Vista [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2008 [applications de bureau uniquement]
Plateforme cible Windows
En-tête restartmanager.h
Bibliothèque Rstrtmgr.lib
DLL Rstrtmgr.dll

Voir aussi

RegisterApplicationRestart

RmCancelCurrentTask

RmRestart