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

另請參閱

ExitProcess

GetExitCodeProcess

GetExitCodeThread

OpenProcess

處理序和執行緒函式

程序

終止進程

VBS 記憶體保護區中可用的 Vertdll API