Win32 内存快照

Posted 不会写代码的丝丽

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Win32 内存快照相关的知识,希望对你有一定的参考价值。

概述

CreateToolhelp32Snapshot docmentation

我们可以通过获取内存的快照得到系统当前运行的信息,比如线程进程等。
CreateToolhelp32Snapshot可以获得对应当前调用时刻的快照句柄,再通过对应的函数即可查询具体的信息。

HANDLE CreateToolhelp32Snapshot(
  DWORD dwFlags,
  DWORD th32ProcessID
);

dwFlags
指示哪些系统信息被包含在快照中,比如线程还是module等.具体标志位可参考上文

th32ProcessID指定要抓取哪个进程的快照,如果传入0表示抓取全部进程。

一个Demo

nclude <iostream>
#include <Windows.h>
#include<tlhelp32.h>
using namespace std;

int main()
{
	//TH32CS_SNAPALL表示抓取所有快照信息,包含线程,使用模块等
	//传入0表示抓取所有的进程
	HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPALL, 0);
   
	if (snapshot == INVALID_HANDLE_VALUE)
	{
		cout << "快照获取失败" << endl;
		return EXIT_FAILURE;
	}

	PROCESSENTRY32 pe;
	
	pe.dwSize = sizeof(pe);
	//Process32First函数获取快照列表进程中第一个进程的信息,并传入PROCESSENTRY32对象
	BOOL result = Process32First(snapshot, &pe);
	do
	{
	
		cout << "pid "<< pe.th32ProcessID << " \\t"<< pe.szExeFile << endl;
		//获取下一个在快照中的进程信息
		result = Process32Next(snapshot, &pe);
	} while (result);


	CloseHandle(snapshot);

	return EXIT_SUCCESS;

}

在这里插入图片描述

以上是关于Win32 内存快照的主要内容,如果未能解决你的问题,请参考以下文章

(转载)Win32进程创建进程快照进程终止用例

99.遍历进程并直接写入内存

如何使用 xcode 将快照划分为多个片段,以便让用户与每个片段进行交互?

win32gui在python3.7中截屏会导致内存泄漏

win32day13-地址空间/地址映射/虚拟内存/堆内存/内存映射文件

win32day13-地址空间/地址映射/虚拟内存/堆内存/内存映射文件