TerminateProcess 函数 (processthreadsapi.h)

终止指定的进程及其所有线程。

语法

BOOL TerminateProcess(
  [in] HANDLE hProcess,
  [in] UINT   uExitCode
);

参数

[in] hProcess

要终止的进程句柄。

句柄必须具有 PROCESS_TERMINATE 访问权限。 有关详细信息,请参阅 进程安全性和访问权限

[in] uExitCode

进程和线程将使用的退出代码,由于此调用而终止。 使用 GetExitCodeProcess 函数检索进程的退出值。 使用 GetExitCodeThread 函数检索线程的退出值。

返回值

如果该函数成功,则返回值为非零值。

如果函数失败,则返回值为零。 要获得更多的错误信息,请调用 GetLastError。

注解

TerminateProcess 函数用于无条件地导致进程退出。 如果使用 TerminateProcess 而不是 ExitProcess,则动态链接库 (DLL) 维护的全局数据状态可能会受到威胁。

此函数停止进程内所有线程的执行,并请求取消所有挂起的 I/O。 在完成或取消所有挂起的 I/O 之前,终止的进程无法退出。 当进程终止时,其内核对象不会销毁,直到向进程开放句柄的所有进程释放这些句柄。

当进程终止自身时, TerminateProcess 将停止调用线程的执行,并且不返回。 否则, TerminateProcess 是异步的;它启动终止并立即返回。 如果需要确保进程已终止,请使用进程的句柄调用 WaitForSingleObject 函数。

进程无法阻止自身被终止。

进程终止后,使用打开进程句柄调用 TerminateProcess 失败 ,ERROR_ACCESS_DENIED (5) 错误代码。

要求

   
最低受支持的客户端 Windows XP [桌面应用 | UWP 应用]
最低受支持的服务器 Windows Server 2003 [桌面应用 | UWP 应用]
目标平台 Windows
标头 processthreadsapi.h (包括 Windows Server 2003 上的 Windows.h、Windows Vista、Windows 7、Windows Server 2008 Windows Server 2008 R2)
Library Kernel32.lib
DLL Kernel32.dll

另请参阅

ExitProcess

GetExitCodeProcess

GetExitCodeThread

OpenProcess

进程和线程函数

进程

终止进程

VBS enclave 中可用的 Vertdll API