TerminateProcess-Funktion (processthreadsapi.h)
Beendet den angegebenen Prozess und alle zugehörigen Threads.
Syntax
BOOL TerminateProcess(
[in] HANDLE hProcess,
[in] UINT uExitCode
);
Parameter
[in] hProcess
Ein Handle für den zu beendenden Prozess.
Das Handle muss über das zugriffsrecht PROCESS_TERMINATE verfügen. Weitere Informationen finden Sie unter Prozesssicherheit und Zugriffsrechte.
[in] uExitCode
Der Exitcode, der vom Prozess verwendet werden soll, und threads, die als Ergebnis dieses Aufrufs beendet werden. Verwenden Sie die GetExitCodeProcess-Funktion , um den Exitwert eines Prozesses abzurufen. Verwenden Sie die GetExitCodeThread-Funktion , um den Exitwert eines Threads abzurufen.
Rückgabewert
Wenn die Funktion erfolgreich ist, ist der Rückgabewert ungleich Null.
Wenn die Funktion fehlerhaft ist, ist der Rückgabewert null. Um erweiterte Fehlerinformationen zu erhalten, rufen Sie GetLastError auf.
Hinweise
Die TerminateProcess-Funktion wird verwendet, um einen Prozess bedingungslos zu beenden. Der Status globaler Daten, die von DLLs (Dynamic Link Libraries) verwaltet werden, kann kompromittiert werden, wenn TerminateProcess anstelle von ExitProcess verwendet wird.
Diese Funktion beendet die Ausführung aller Threads innerhalb des Prozesses und fordert den Abbruch aller ausstehenden E/A-Vorgänge an. Der beendete Prozess kann erst beendet werden, wenn alle ausstehenden E/A-Vorgänge abgeschlossen oder abgebrochen wurden. Wenn ein Prozess beendet wird, wird sein Kernelobjekt erst zerstört, wenn alle Prozesse, die über geöffnete Handles für den Prozess verfügen, diese Handles freigegeben haben.
Wenn sich ein Prozess selbst beendet, beendet TerminateProcess die Ausführung des aufrufenden Threads und gibt nicht zurück. Andernfalls ist TerminateProcess asynchron. er initiiert die Beendigung und gibt sofort zurück. Wenn Sie sicherstellen müssen, dass der Prozess beendet wurde, rufen Sie die WaitForSingleObject-Funktion mit einem Handle für den Prozess auf.
Ein Prozess kann nicht verhindern, dass er beendet wird.
Nachdem ein Prozess beendet wurde, schlägt der Aufruf von TerminateProcess mit geöffneten Handles für den Prozess mit ERROR_ACCESS_DENIED Fehlercode (5) fehl.
Anforderungen
Unterstützte Mindestversion (Client) | Windows XP [Desktop-Apps | UWP-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2003 [Desktop-Apps | UWP-Apps] |
Zielplattform | Windows |
Kopfzeile | processthreadsapi.h (enthalten Windows.h unter Windows Server 2003, Windows Vista, Windows 7, Windows Server 2008 Windows Server 2008 R2) |
Bibliothek | Kernel32.lib |
DLL | Kernel32.dll |