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 或启动或结束线程,您正在迭代它们。这通常不会有好的结果,当先前迭代的资源不再存在时,很难要求“给我下一个”。

因此,CreateToolhelp32Snapshot() 所做的是非常简单地暂停进程并复制有关进程使用的资源的所有信息。所以当它返回时,您可以安全地调用 Module32First/Next 和 Thread32First/Next 来迭代复制的信息。它创建进程状态的快照。就像一张照片,一个凝固的瞬间。顺便说一句,它获取进程状态的原子副本的确切方式没有记录。

请注意,您获得的信息总是过时的,这是不可避免的。请注意 dwFlags 参数,它可以让您请求要迭代的特定资源。这有助于它更快地制作快照并消耗更少的内存。

于 2012-12-29T21:56:30.220 回答