GetExitCodeThread 関数 (processthreadsapi.h)
指定したスレッドの終了状態を取得します。
構文
BOOL GetExitCodeThread(
[in] HANDLE hThread,
[out] LPDWORD lpExitCode
);
パラメーター
[in] hThread
スレッドへのハンドル。
ハンドルには、THREAD_QUERY_INFORMATIONまたは THREAD_QUERY_LIMITED_INFORMATION アクセス権 が 必要です。 詳細については、「 スレッド セキュリティとアクセス権」を参照してください。
Windows Server 2003 および Windows XP: ハンドルには、 THREAD_QUERY_INFORMATION アクセス権が必要です。
[out] lpExitCode
スレッド終了状態を受け取る変数へのポインター。 詳細については、「解説」を参照してください。
戻り値
関数が成功すると、戻り値は 0 以外になります。
関数が失敗した場合は、0 を返します。 詳細なエラー情報を得るには、GetLastError を呼び出します。
解説
この関数は直ちにを返します。 指定したスレッドが終了せず、関数が成功した場合、返される状態は STILL_ACTIVE。 スレッドが終了し、関数が成功した場合、返される状態は次のいずれかの値になります。
- ExitThread 関数または TerminateThread 関数で指定された終了値。
- スレッド関数からの戻り値。
- スレッドのプロセスの終了値。
大事なGetExitCodeThread 関数は、スレッドが終了した後にのみ、アプリケーションによって定義された有効なエラー コードを返します。 そのため、アプリケーションではエラー コードとして STILL_ACTIVE (259) を使用しないでください。 スレッド がエラー コードとしてSTILL_ACTIVE (259) を返した場合、この値をテストするアプリケーションでは、スレッドがまだ実行中であることを意味し、スレッドが終了した後もスレッドの完了をテストし続ける可能性があります。これにより、アプリケーションが無限ループになる可能性があります。 この問題を回避するには、スレッドが終了したことが確認された後にのみ、呼び出し元が GetExitCodeThread 関数を呼び出す必要があります。 待機時間が 0 の WaitForSingleObject 関数を使用して、スレッドが終了したかどうかを判断します。
Windows 8.1とWindows Server 2012 R2: この関数は、Windows 8.1、Windows Server 2012 R2 以降の Windows ストア アプリでサポートされています。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | 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;Windows Phone 8.1 の WindowsPhoneCore.lib |
[DLL] | Kernel32.dll;Windows Phone 8.1 での KernelBase.dll |