Функция TerminateProcess (processthreadsapi.h)
Завершает указанный процесс и все его потоки.
Синтаксис
BOOL TerminateProcess(
[in] HANDLE hProcess,
[in] UINT uExitCode
);
Параметры
[in] hProcess
Дескриптор процесса, который необходимо завершить.
Дескриптор должен иметь право доступа PROCESS_TERMINATE . Дополнительные сведения см. в разделе Управление правами на доступ и безопасность процесса.
[in] uExitCode
Код выхода, используемый процессом и потоками, завершаемыми в результате этого вызова. Используйте функцию GetExitCodeProcess для получения значения выхода процесса. Используйте функцию GetExitCodeThread для получения значения выхода потока.
Возвращаемое значение
Если функция выполняется успешно, возвращается ненулевое значение.
Если функция выполняется неудачно, возвращается нулевое значение. Дополнительные сведения об ошибке можно получить, вызвав GetLastError.
Комментарии
Функция TerminateProcess используется для безусловного завершения процесса. Состояние глобальных данных, поддерживаемых библиотеками динамической компоновки (DLL), может быть скомпрометировано, если используется TerminateProcess , а не ExitProcess.
Эта функция останавливает выполнение всех потоков в рамках процесса и запрашивает отмену всех ожидающих операций ввода-вывода. Завершенный процесс не может завершиться, пока все ожидающие операции ввода-вывода не будут завершены или отменены. Когда процесс завершается, его объект ядра не уничтожается до тех пор, пока все процессы, имеющие открытые дескрипторы для процесса, не будут освобождены эти дескрипторы.
Когда процесс завершается сам, TerminateProcess останавливает выполнение вызывающего потока и не возвращается. В противном случае TerminateProcess является асинхронным; он инициирует завершение и немедленно возвращается. Если необходимо убедиться, что процесс завершен, вызовите функцию WaitForSingleObject с дескриптором процесса.
Процесс не может помешать завершению самого себя.
После завершения процесса вызов TerminateProcess с открытыми дескрипторами для процесса завершается ошибкой с кодом ошибки ERROR_ACCESS_DENIED (5).
Требования
Минимальная версия клиента | Windows XP [классические приложения | Приложения UWP] |
Минимальная версия сервера | Windows Server 2003 [классические приложения | Приложения UWP] |
Целевая платформа | Windows |
Header | processthreadsapi.h (включая Windows.h в Windows Server 2003, Windows Vista, Windows 7, Windows Server 2008 Windows Server 2008 R2) |
Библиотека | Kernel32.lib |
DLL | Kernel32.dll |