ExitProcess 関数 (processthreadsapi.h)
呼び出し元プロセスとそのすべてのスレッドを終了します。
構文
void ExitProcess(
[in] UINT uExitCode
);
パラメーター
[in] uExitCode
プロセスとすべてのスレッドの終了コード。
戻り値
なし
解説
GetExitCodeProcess 関数を使用して、プロセスの終了値を取得します。 GetExitCodeThread 関数を使用して、スレッドの終了値を取得します。
プロセスを終了すると、次の処理が発生します。
- プロセス内のすべてのスレッド (呼び出し元スレッドを除く) は、DLL_THREAD_DETACH通知を受け取らずに実行を終了します。
- 手順 1 で終了したすべてのスレッドの状態がシグナル通知されます。
- 読み込まれたすべてのダイナミック リンク ライブラリ (DLL) のエントリ ポイント関数は、DLL_PROCESS_DETACHで呼び出されます。
- アタッチされているすべての DLL でプロセス終了コードが実行されると、 ExitProcess 関数は呼び出し元のスレッドを含む現在のプロセスを終了します。
- 呼び出し元のスレッドの状態がシグナル状態になります。
- プロセスによって開かれたすべてのオブジェクト ハンドルが閉じられます。
- プロセスの終了状態は、STILL_ACTIVEからプロセスの終了値に変わります。
- プロセス オブジェクトの状態が通知され、プロセスの終了を待機していたスレッドが満たされます。
DLL で ExitProcess を 呼び出すと、予期しないアプリケーションまたはシステム エラーが発生する可能性があります。 DLL を読み込むアプリケーションまたはシステム コンポーネントがわかっていて、このコンテキストで ExitProcess を呼び出しても安全である場合にのみ、必ず DLL から ExitProcess を 呼び出してください。
プロセスを終了しても、子プロセスは終了しません。
プロセスを終了しても、必ずしもオペレーティング システムからプロセス オブジェクトが削除されるとは限りません。 プロセス オブジェクトは、プロセスの最後のハンドルが閉じられると削除されます。
例
例については、「 リダイレクトされた入力と出力を使用した子プロセスの作成」を参照してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows XP (デスクトップ アプリのみ) |
サポートされている最小のサーバー | Windows Server 2003 (デスクトップ アプリのみ) |
対象プラットフォーム | 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 |