C++ CreateToolhelp32Snapshot和PSCaptureSnashot函数之间的差异
WinAPI中定义了两个函数来捕获目标进程的数据,有人能解释一下这些函数的用例吗C++ CreateToolhelp32Snapshot和PSCaptureSnashot函数之间的差异,c++,windows,winapi,visual-c++,win32-process,C++,Windows,Winapi,Visual C++,Win32 Process,WinAPI中定义了两个函数来捕获目标进程的数据,有人能解释一下这些函数的用例吗 何时使用每个功能? 如果我们必须检查目标进程在windows运行时是否仍处于活动状态,那么哪一个进程可以有效地帮助我们?windows API会随着windows版本的演变而增长 CreateToolhelp32Snapshot可用于Windows XP。PSCaptureSnashot可从Windows 8.1获得 因此,不同之处就在于所记录的内容。PSCaptureSnapshot可能具有更多功能。
如果我们必须检查目标进程在windows运行时是否仍处于活动状态,那么哪一个进程可以有效地帮助我们?windows API会随着windows版本的演变而增长 CreateToolhelp32Snapshot可用于Windows XP。PSCaptureSnashot可从Windows 8.1获得 因此,不同之处就在于所记录的内容。PSCaptureSnapshot可能具有更多功能。在大多数情况下,旧的API版本只是调用新的API,并使用新功能转换新版本的标志和结构 我不能在这里详细说明这一点,但我假设如果CreateToolhelp32Snapshot的功能对您来说足够的话,两者之间没有太大的区别 对我来说,主要的决定是:你的目标是什么Windows版本?Windows7?答案很简单,使用什么…;)
根据标志的不同,这两个函数都会为您提供所需的内容…谢谢您的回答。。我正在使用Win10 SDK。目前我正在使用PSCaptureSnapshot函数,我还没有分析任何内容。我只是想知道它们的有效性,以便检查进程状态,无论它是否仍然处于活动状态not@Buddhika-如果需要检查进程是否仍处于活动状态,则无需使用任何此快照功能。你需要等一下handle@RbMm谢谢你的提示。我会考虑的。正如你的意思是使用快照,它可能会有性能冲击,不是吗?是的。无需使用此功能是不明智和有效的。。。你想知道什么?更改您的问题以给我们更准确的答案。CreateToolhelp32Snapshot来自Win95,只有NT4没有提供它。
如果我们必须检查目标进程是否仍处于活动状态
-您需要打开进程句柄并在调用中使用它WaitForSingleObject[Ex]
,WaitForMultipleObjects[Ex]
,MsgWaitForMultipleObjects[Ex]
,etc@RbMm最安全的方式是什么?使用EnumProcess和OpenProcess是否能保证流程的存在?这取决于您希望如何确定流程。简称?在这种情况下,您需要CreateToolhelp32Snapshot
+Process32First
+Process32Next
+OpenProcess
与同步
访问。但按名称搜索过程并不可靠。不清楚您需要什么流程。可能存在另一种方式,用于pscapturesnashot
您需要已经拥有目标进程的句柄。如果您只想在进程退出时获取—对于您所需要的pscapturesnapshot
。@RbMm我没有使用短名称、进程ID或进程句柄。。可以有多个实例。在多个实例的情况下可能会有帮助