1

私の英語はあまり上手ではありません。私はこれをtlhelp32.hバージョン1.0で見ます:

/****** Shapshot function **********************************************/

HANDLE
WINAPI
CreateToolhelp32Snapshot(
    DWORD dwFlags,
    DWORD th32ProcessID
    );

Ln31。これはどういう意味です?

4

2 に答える 2

5

これは、システム内のプロセスのスナップショットを作成することを意味します。スナップショットは、特定の時点での状態です。スナップショットを作成した後、新しいプロセスが開始されたり、古いプロセスが終了したりすることがありますが、それらの変更はスナップショットに反映されません。

更新:タイプミスに気付かなかった、そうではないはずsnapshotですshapshot

于 2012-12-29T20:55:07.877 に答える
2

CreateToolhelp32Snapshot()は、実行中のすべてのプロセスを反復処理するのに役立つ関数です。または、プロセスによって使用されるリソース。プロセスによってロードされるすべてのDLLと同様です。または、プロセスで使用されるスレッド。その他。

一般的に、それは危険な操作です。プロセスは実行を継続し、DLLを繰り返し実行している、DLLをロードまたはアンロードしたり、スレッドを開始または終了したりする可能性があるためです。これは一般的にはうまくいきません。以前に繰り返されたリソースがなくなったときに、「次のリソースをください」と尋ねるのは非常に困難です。

したがって、CreateToolhelp32Snapshot()が行うことは、ごく簡単に、プロセスを一時停止し、プロセスによって使用されるリソースに関するすべての情報をコピーすることです。したがって、戻ってきたら、Module32First/NextとThread32First/Nextを安全に呼び出して、コピーされた情報を繰り返すことができます。プロセス状態のスナップショットを作成します。写真のように、凍った瞬間。プロセス状態のアトミックコピーを取得する正確な方法は、文書化されていません。

取得する情報は常に古くなっていることに注意してください。これは避けられないことです。また、反復する特定のリソースを要求できるdwFlags引数に注意してください。これは、スナップショットをより速くし、より少ないメモリを消費するのに役立ちます。

于 2012-12-29T21:56:30.220 に答える