ExitProcess, fonction (processthreadsapi.h)

Termine le processus appelant et tous ses threads.

Syntaxe

void ExitProcess(
  [in] UINT uExitCode
);

Paramètres

[in] uExitCode

Code de sortie du processus et de tous les threads.

Valeur de retour

None

Notes

Utilisez la fonction GetExitCodeProcess pour récupérer la valeur de sortie du processus. Utilisez la fonction GetExitCodeThread pour récupérer la valeur de sortie d’un thread.

La sortie d’un processus entraîne les causes suivantes :

  1. Tous les threads du processus, à l’exception du thread appelant, terminent leur exécution sans recevoir de notification de DLL_THREAD_DETACH.
  2. Les états de tous les threads arrêtés à l’étape 1 deviennent signalés.
  3. Les fonctions de point d’entrée de toutes les bibliothèques de liens dynamiques chargées sont appelées avec DLL_PROCESS_DETACH.
  4. Une fois que toutes les DLL jointes ont exécuté n’importe quel code de terminaison de processus, la fonction ExitProcess met fin au processus actuel, y compris le thread appelant.
  5. L’état du thread appelant devient signalé.
  6. Tous les handles d’objet ouverts par le processus sont fermés.
  7. L’état d’arrêt du processus passe de STILL_ACTIVE à la valeur de sortie du processus.
  8. L’état de l’objet de processus devient signalé, satisfaisant tous les threads qui attendaient que le processus se termine.
Si l’un des threads arrêtés dans le processus contient un verrou et que le code de détachement DLL dans l’une des DLL chargées tente d’acquérir le même verrou, l’appel de ExitProcess entraîne un blocage. En revanche, si un processus s’arrête en appelant TerminateProcess, les DLL auxquelles le processus est attaché ne sont pas avertis de l’arrêt du processus. Par conséquent, si vous ne connaissez pas l’état de tous les threads de votre processus, il est préférable d’appeler TerminateProcess que ExitProcess. Notez que le retour de la fonction principale d’une application entraîne un appel à ExitProcess.

L’appel de ExitProcess dans une DLL peut entraîner des erreurs inattendues d’application ou de système. Veillez à appeler ExitProcess à partir d’une DLL uniquement si vous savez quelles applications ou composants système chargeront la DLL et qu’il est sûr d’appeler ExitProcess dans ce contexte.

La sortie d’un processus n’entraîne pas l’arrêt des processus enfants.

La sortie d’un processus ne supprime pas nécessairement l’objet de processus du système d’exploitation. Un objet de processus est supprimé lorsque le dernier handle du processus est fermé.

Exemples

Pour obtenir un exemple, consultez Création d’un processus enfant avec entrée et sortie redirigées.

Configuration requise

   
Client minimal pris en charge Windows XP [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2003 [applications de bureau uniquement]
Plateforme cible Windows
En-tête processthreadsapi.h (inclure Windows Server 2003, Windows Vista, Windows 7, Windows Server 2008 Windows Server 2008 R2, Windows.h)
Bibliothèque Kernel32.lib
DLL Kernel32.dll

Voir aussi

CreateProcess

CreateRemoteThread

CreateThread

ExitThread

GetExitCodeProcess

GetExitCodeThread

OpenProcess

Fonctions de processus et de thread

Processus

TerminateProcess

Fin d’un processus