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 |
---|---|
|
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. |
|
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 |
---|---|
|
Toutes les opérations d’arrêt, de redémarrage et de rappel ont été effectuées avec succès. |
|
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. |
|
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. |
|
Cette valeur d’erreur est retournée par la fonction RmShutdown lorsque la demande d’annulation d’une opération réussit. |
|
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. |
|
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. |
|
Une opération n’a pas pu lire ou écrire dans le Registre. |
|
Une opération de redémarrage du Gestionnaire n’a pas pu être effectuée, car la mémoire disponible est insuffisante. |
|
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 |