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 |