Partager via


Fonction RmRestart (restartmanager.h)

Redémarre les applications et les services qui ont été arrêtés par la fonction RmShutdown et qui ont été inscrits pour être redémarrés à l’aide de la fonction RegisterApplicationRestart . Cette fonction ne peut être appelée que par le programme d’installation principal qui a appelé la fonction RmStartSession pour démarrer la session Restart Manager.

Syntaxe

DWORD RmRestart(
  [in]           DWORD                    dwSessionHandle,
                 DWORD                    dwRestartFlags,
  [in, optional] RM_WRITE_STATUS_CALLBACK fnStatus
);

Paramètres

[in] dwSessionHandle

Handle de la session du Gestionnaire de redémarrage existant.

dwRestartFlags

Réservé. Ce paramètre doit être 0.

[in, optional] fnStatus

Pointeur vers une fonction de rappel de message status utilisée pour communiquer status pendant l’exécution de la fonction RmRestart. 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_REQUEST_OUT_OF_SEQUENCE
776
Cette valeur d’erreur est retournée si la fonction RmRestart est appelée avec un handle de session valide avant d’appeler la fonction RmShutdown .
ERROR_FAIL_RESTART
352
Impossible de redémarrer une ou plusieurs applications. Les structures RM_PROCESS_INFO retournées par la fonction RmGetList contiennent des informations status mises à jour.
ERROR_SEM_TIMEOUT
121
Une fonction Restart Manager n’a pas pu obtenir un mutex d’écriture de 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_CANCELLED
1223
Cette valeur d’erreur est retournée par la fonction RmRestart lorsque la demande d’annulation d’une opération réussit.
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 se terminer, car la mémoire disponible était insuffisante.
ERROR_INVALID_HANDLE
6
Il n’existe aucune session restart Manager pour le handle fourni.
ERROR_SUCCESS
0
La fonction réussit et retourne.

Remarques

Après avoir appelé la fonction RmRestart, les structures RM_PROCESS_INFO retournées par la fonction RmGetList contiennent des informations status mises à jour.

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.

Lorsqu’une application console est arrêtée et redémarrée par le Gestionnaire de redémarrage, l’application est redémarrée dans une nouvelle console.

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.

La fonction RmRestart ne redémarre pas les applications qui s’exécutent avec des privilèges élevés. Même si l’application a été arrêtée par le Gestionnaire de redémarrage.

La fonction RmRestart ne redémarre pas les applications qui ne s’exécutent pas en tant qu’utilisateur actuellement connecté. Même si l’application a été arrêtée par le Gestionnaire de redémarrage. Par exemple, la fonction RmRestart ne redémarre pas les applications démarrées avec la commande d’identification qui ne s’exécutent pas en tant qu’utilisateur actuellement connecté. Ces applications doivent être redémarrées manuellement.

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

RmShutdown