2012-01-24 24 views
5

現在のプロセスに属するすべてのスレッドIDを見つけるより良い方法があるかどうかを調べようとしています。 TH32CS_SNAPTHREADでCreateToolhelp32Snapshotを使用し、スレッドのプロセスIDが現在のプロセスIDと等しいかどうかを確認するためにスレッドを反復処理しているようですが、解決策ですが実行中のスレッドをすべて反復しないようにしたい。私はちょうど与えられたプロセスに属するスレッドを反復したいと思う。すばやく簡単なAPIがある場合はお知らせください。私はC + +でそれを行う必要があります。プロセスIDが与えられたプロセスのすべてのスレッドを見つける

ありがとう、 Abhinay。

+1

と思われます。 http://blogs.msdn.com/b/oldnewthing/archive/2006/02/23/537856.aspx – Neil

+2

早期最適化を参照してください。通常、マシンにはアクティブスレッドが1000を超えません。 TH32CS_SNAPALLを使用して* th32ProcessID *を選択可能にすることができます。 –

+0

@ Hans:TH32CS_SNAPALLは、「システム内のすべてのプロセスとスレッド、th32ProcessIDで指定されたプロセスのヒープとモジュールを含む」と記述されています。 –

答えて

0

TH32CS_SNAPPROCESS(0x00000002)でCreateToolhelp32Snapshotを使用した後、Thread32First functionを使用してスレッドを取得できます。

例コードはhereです。

1

"現在のプロセス"が書かれている場合は、スレッドがDLL_THREAD_ATTACHとDLL_THREAD_DETACHの理由コードで追加または終了されるたびにDllMain関数が呼び出されるという事実を利用できます。あなたのリストを保持するのは簡単です。

関連する問題