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 Vista、Windows 7、Windows Server 2008 Windows Server 2008 R2) |
程式庫 | Kernel32.lib |
DLL | Kernel32.dll |