SuspendThread 関数 (processthreadsapi.h)
指定したスレッドを中断します。
64 ビット アプリケーションでは、 Wow64SuspendThread 関数を使用して WOW64 スレッドを中断できます。
構文
DWORD SuspendThread(
[in] HANDLE hThread
);
パラメーター
[in] hThread
中断されるスレッドへのハンドル。
ハンドルには 、THREAD_SUSPEND_RESUME アクセス権が必要です。 詳細については、「 スレッド セキュリティとアクセス権」を参照してください。
戻り値
関数が成功した場合、戻り値はスレッドの以前の中断カウントです。それ以外の場合は です (DWORD) -1
。 拡張エラー情報を取得するには、 GetLastError 関数を使用します。
注釈
関数が成功すると、指定したスレッドの実行が中断され、スレッドの中断カウントがインクリメントされます。 スレッドを中断すると、スレッドはユーザー モード (アプリケーション) コードの実行を停止します。
この関数は、主にデバッガーで使用するように設計されています。 スレッドの同期には使用されません。 ミューテックスやクリティカル セクションなどの同期オブジェクトを所有するスレッドで SuspendThread を呼び出すと、呼び出し元のスレッドが中断されたスレッドが所有する同期オブジェクトを取得しようとすると、デッドロックが発生する可能性があります。 この状況を回避するには、デバッガーではないアプリケーション内のスレッドが、それ自体を中断するように他のスレッドに通知する必要があります。 ターゲット スレッドは、このシグナルに対してwatchし、適切に応答するように設計されている必要があります。
各スレッドには中断カウントがあります (最大値 は MAXIMUM_SUSPEND_COUNT)。 中断回数が 0 より大きい場合、スレッドは中断されます。それ以外の場合、スレッドは中断されず、実行の対象となります。 SuspendThread を呼び出すと、ターゲット スレッドの中断カウントがインクリメントされます。 最大中断回数を超えてインクリメントしようとすると、カウントをインクリメントせずにエラーが発生します。
ResumeThread 関数は、中断されたスレッドの中断カウントをデクリメントします。
Windows Phone 8.1: この関数は、Windows Phone 8.1 以降の Windows Phone ストア アプリでサポートされています。
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 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 |