SuspendThread()を使用して、別のプロセスのスレッドを一時停止できます。そのプロセスの実行を完全に一時停止する方法はありますか?はいの場合は、コードを投稿してください。
ありがとう。
PS:「なぜこれをやりたいのか」と聞かれるので、ここに投稿します。私はもう維持されていないレガシーソフトウェアを扱っています。ソースコードにアクセスできません。今のところ、ファイルがデータでいっぱいになるまで一時停止してから、実行を再開する必要があります。
唯一の方法は、そのプロセスのすべてのスレッドを中断することです。
実際のコードを見たい場合は、こちらのサンプルを確認してください。
プロセスが高速または非同期で多数のスレッドを生成または生成する場合、SuspendThread()を使用して競合状態が発生します。
同じこと(つまり、プロセス全体)を実現する方法は、DebugActiveProcess()を使用してデバッガーとしてターゲットプロセスにアタッチしてから、 DebugBreakProcessを呼び出すことです。プロセスがブレークポイントにある場合、新しいスレッドは作成されず、プロセス全体のすべての実行が停止します。
>唯一の方法は、そのプロセスのすべてのスレッドを一時停止することです。
いいえ
。文書化されていないカーネルAPI(NT 3.1以降にエクスポートされたもの)を使用して、Pidを一時停止します。