TerminateProcess 関数 (processthreadsapi.h)
指定したプロセスとそのすべてのスレッドを終了します。
構文
BOOL TerminateProcess(
[in] HANDLE hProcess,
[in] UINT uExitCode
);
パラメーター
[in] hProcess
終了するプロセスのハンドル。
ハンドルには、 PROCESS_TERMINATE アクセス権が必要です。 詳細については、「 セキュリティとアクセス権の処理」を参照してください。
[in] uExitCode
この呼び出しの結果として終了したプロセスとスレッドによって使用される終了コード。 GetExitCodeProcess 関数を使用して、プロセスの終了値を取得します。 GetExitCodeThread 関数を使用して、スレッドの終了値を取得します。
戻り値
関数が成功すると、戻り値は 0 以外になります。
関数が失敗した場合は、0 を返します。 詳細なエラー情報を得るには、GetLastError を呼び出します。
解説
TerminateProcess 関数は、プロセスを無条件に終了させるために使用されます。 ExitProcess ではなく TerminateProcess を使用すると、ダイナミック リンク ライブラリ (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 の Windows.h を含む) |
Library | Kernel32.lib |
[DLL] | Kernel32.dll |