TerminateProcess, fonction (processthreadsapi.h)
Arrête le processus spécifié et tous ses threads.
Syntaxe
BOOL TerminateProcess(
[in] HANDLE hProcess,
[in] UINT uExitCode
);
Paramètres
[in] hProcess
Handle du processus à terminer.
Le handle doit avoir le droit d’accès PROCESS_TERMINATE . Pour plus d’informations, consultez Traiter les droits de sécurité et d’accès.
[in] uExitCode
Code de sortie à utiliser par le processus et les threads arrêtés à la suite de cet appel. Utilisez la fonction GetExitCodeProcess pour récupérer la valeur de sortie d’un processus. Utilisez la fonction GetExitCodeThread pour récupérer la valeur de sortie d’un thread.
Valeur retournée
Si la fonction réussit, la valeur de retour est différente de zéro.
Si la fonction échoue, la valeur de retour est égale à zéro. Pour obtenir des informations détaillées sur l’erreur, appelez GetLastError.
Remarques
La fonction TerminateProcess est utilisée pour provoquer la fermeture inconditionnelle d’un processus. L’état des données globales gérées par les bibliothèques de liens dynamiques (DLL) peut être compromis si TerminateProcess est utilisé plutôt que ExitProcess.
Cette fonction arrête l’exécution de tous les threads au sein du processus et demande l’annulation de toutes les E/S en attente. Le processus terminé ne peut pas se terminer tant que toutes les E/S en attente n’ont pas été terminées ou annulées. Lorsqu’un processus se termine, son objet noyau n’est pas détruit tant que tous les processus qui ont des handles ouverts au processus n’ont pas libéré ces handles.
Lorsqu’un processus se termine lui-même, TerminateProcess arrête l’exécution du thread appelant et ne retourne pas. Sinon, TerminateProcess est asynchrone ; il initie l’arrêt et retourne immédiatement. Si vous devez vous assurer que le processus est terminé, appelez la fonction WaitForSingleObject avec un handle pour le processus.
Un processus ne peut pas s’empêcher d’être arrêté.
Une fois qu’un processus s’est terminé, appelez à TerminateProcess avec des handles ouverts pour le processus échoue avec ERROR_ACCESS_DENIED (5) code d’erreur.
Configuration requise
Client minimal pris en charge | Windows XP [applications de bureau | applications UWP] |
Serveur minimal pris en charge | Windows Server 2003 [applications de bureau | applications UWP] |
Plateforme cible | Windows |
En-tête | processthreadsapi.h (inclure Windows.h sur Windows Server 2003, Windows Vista, Windows 7, Windows Server 2008 Windows Server 2008 R2) |
Bibliothèque | Kernel32.lib |
DLL | Kernel32.dll |