次の方法で共有


GetExitCodeProcess 関数 (processthreadsapi.h)

指定したプロセスの終了状態を取得します。

構文

BOOL GetExitCodeProcess(
  [in]  HANDLE  hProcess,
  [out] LPDWORD lpExitCode
);

パラメーター

[in] hProcess

プロセスへのハンドル。

ハンドルには、 PROCESS_QUERY_INFORMATION または PROCESS_QUERY_LIMITED_INFORMATION アクセス権が必要です。 詳細については、「 プロセス のセキュリティとアクセス権」を参照してください。

Windows Server 2003 および Windows XP: ハンドルには 、PROCESS_QUERY_INFORMATION アクセス権が必要です。

[out] lpExitCode

プロセス終了状態を受け取る変数へのポインター。 詳細については、「解説」を参照してください。

戻り値

関数が成功すると、戻り値は 0 以外になります。

関数が失敗した場合は、0 を返します。 詳細なエラー情報を得るには、GetLastError を呼び出します。

解説

この関数は直ちにを返します。 プロセスが終了せず、関数が成功した場合、返される状態は STILL_ACTIVE ( STATUS_PENDING のマクロ (minwinbase.h)) です。 プロセスが終了し、関数が成功した場合、返される状態は次のいずれかの値になります。

  • ExitProcess 関数または TerminateProcess 関数で指定された終了値。
  • プロセスのメインまたは WinMain 関数からの戻り値。
  • プロセスが終了する原因となった未処理の例外の例外値。

重要

GetExitCodeProcess 関数は、スレッドが終了した後にのみ、アプリケーションによって定義された有効なエラー コードを返します。 したがって、アプリケーションでは、エラー コードとして STILL_ACTIVE (259) を使用しないでください (STILL_ACTIVESTATUS_PENDING のマクロ (minwinbase.h))。 スレッド がエラー コードとしてSTILL_ACTIVE (259) を返した場合、その値をテストするアプリケーションは、スレッドがまだ実行されていることを意味すると解釈し、スレッドが終了した後もスレッドの完了をテストし続けます。これにより、アプリケーションが無限ループになる可能性があります。

要件

要件
サポートされている最小のクライアント 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

関連項目

ExitProcess

ExitThread

プロセス関数とスレッド関数

処理

TerminateProcess

プロセスの終了

WinMain