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