Partager via


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

Voir aussi

ExitProcess

GetExitCodeProcess

GetExitCodeThread

OpenProcess

Fonctions de processus et de thread

Processus

Arrêt d’un processus

API Vertdll disponibles dans les enclaves VBS