CreateToolHelp32Snapshot函数获取系统快照
来源:互联网 发布:linux怎么配置jdk 编辑:程序博客网 时间:2024/06/05 00:08
系统为我们在内存中指定了一个关于进程、线程、堆和模块等的当前状态信息副本-----系统快照,我们可以通过CreateToolHelp32Snapshot函数来获取系统快照的句柄,通过该句柄来获取当前状态信息。该函数如下:
HANDLE WINAPI CreateToolhelp32Snapshot( DWORD dwFlags, DWORD th32ProcessID );
- dwFlags:该参数用于指定系统快照中包含的内容,其可以为下面值之一:
- th32ProcessID:该参数用于指定进程的ID。只有在dwFlags为TH32CS_SNAPHEAPLIST或TH32CS_SNAPMODULE时才有效。
操作完成后,我们可以运用CloseToolHelp32Snapshot函数来关闭系统快照句柄:
BOOL WINAPI CloseToolhelp32Snapshot( HANDLE hSnapshot );
1.操作进程快照
1)Process32First函数
BOOL WINAPI Process32First( HANDLE hSnapshot, LPPROCESSENTRY32 lppe );
功能:获取进程快照列表的第一个进程状态信息。
参数:hSnapshot为快照句柄;lppe参数为指向PROCESSENTRY32结构体的指针,该结构体的形式如下:
typedef struct tagPROCESSENTRY32 { DWORD dwSize;//该结构体的大小 DWORD cntUsage;//进程的引用计数 DWORD th32ProcessID; //进程的ID DWORD th32DefaultHeapID; //进程的默认堆ID DWORD th32ModuleID; //进程模块ID DWORD cntThreads; //次进程开启的线程计数 DWORD th32ParentProcessID; //此进程的父进程ID LONG pcPriClassBase; //线程的相对优先级 DWORD dwFlags; //保留字段 TCHAR szExeFile[MAX_PATH];//进程的全名 } PROCESSENTRY32; typedef PROCESSENTRY32 * PPROCESSENTRY32;
注意:调用该函数必须制定dwSize的大小。
2)Process32Next函数
BOOL WINAPI Process32Next( HANDLE hSnapshot, LPPROCESSENTRY32 lppe );
功能:该函数获取进程快照列表中的下一个进程状态信息,该函数返回TRUE,表示成功获取;返回FLASE,表示失败。
2.操作线程快照
1)Thread3First含糊
BOOL WINAPI Thread32First( HANDLE hSnapshot, LPTHREADENTRY32 lpte );
功能:获取快照列表中的第一个线程的状态信息。
参数:hSnapshot为系统快照句柄;lpte为一个指向THREADENTRY32结构体的指针,该结构的形式如下:
typedef struct tagTHREADENTRY32{ DWORD dwSize; //结构体的大小 DWORD cntUsage; //线程引用计数 DWORD th32ThreadID; //线程的ID DWORD th32OwnerProcessID; //拥有该线程的进程ID LONG tpBasePri; //线程的相对优先级,共7个值 LONG tpDeltaPri; //这个成员已经不再被使用,总是设置为零。 DWORD dwFlags;//保留字段,没使用,为0.} THREADENTRY32; typedef THREADENTRY32 * PTHREADENTRY32;
2)Thread32Next函数
BOOL WINAPI Thread32Next( HANDLE hSnapshot, LPTHREADENTRY32 lpte );
功能:获取快照列表中的下一个线程快照状态信息。
3.操作堆快照
1)Heap32First函数
BOOL WINAPI Heap32First( HANDLE hSnapshot, LPHEAPENTRY32 lphe, DWORD th32ProcessID, DWORD th32HeapID );
该函数:获取快照中响应的堆。
参数:
typedef struct tagHEAPENTRY32 { DWORD dwSize;//结构体大小 HANDLE hHandle; //指向一个堆块 DWORD dwAddress; //堆的拾起地址 DWORD dwBlockSize; //堆的大小 DWORD dwFlags; //保留 DWORD dwLockCount; //没使用 DWORD dwResvd; //不再使用 DWORD th32ProcessID; //拥有该对的进程ID DWORD th32HeapID; //该堆的标识符} HEAPENTRY32; typedef HEAPENTRY32 * PHEAPENTRY32; typedef HEAPENTRY32 * LPHEAPENTRY32;
2)Heap32Next函数
BOOL WINAPI Heap32Next( HANDLE hSnapshot, LPHEAPENTRY32 lphe );
3)Heap32LitFirst函数
BOOL WINAPI Heap32ListFirst( HANDLE hSnapshot, LPHEAPLIST32 lphl );
参数:
typedef struct tagHEAPLIST32 { DWORD dwSize;//结构体大小 DWORD th32ProcessID; //进程ID DWORD th32HeapID; //堆栈标识符 DWORD dwFlags; //保留,为0} HEAPLIST32; typedef HEAPLIST32 * PHEAPLIST32; typedef HEAPLIST32 * LPHEAPLIST32;
4)Heap32ListNext函数
BOOL WINAPI Heap32ListNext( HANDLE hSnapshot, LPHEAPLIST32 lphl );
4.操作模块快照
1)Module32First函数
BOOL WINAPI Module32First( HANDLE hSnapshot, LPMODULEENTRY32 lpme );
功能:从系统快照中获取第一个模块信息。
参数:lpme为指向MODULEENTRY32结构体的指针,其形式如下:
typedef struct tagMODULEENTRY32 { DWORD dwSize; //该结构体的大小 DWORD th32ModuleID; //进程上下文模块标识符 DWORD th32ProcessID; //进程标识符 DWORD GlblcntUsage; //全局模块引用计数 DWORD ProccntUsage; //所属进程的模块引用计数 BYTE *modBaseAddr; //所属进程的基地址 DWORD modBaseSize; // HMODULE hModule;//模块的句柄 TCHAR szModule[MAX_MODULE_NAME32 + 1]; //模块名 TCHAR szExePath[MAX_PATH]; //路径} MODULEENTRY32; typedef MODULEENTRY32 * PMODULEENTRY32;
2)Module32Next函数
BOOL WINAPI Module32Next( HANDLE hSnapshot, LPMODULEENTRY32 lpme );
5.Toolhelp32ReadProcessMem
BOOL WINAPI Toolhelp32ReadProcessMemory( DWORD th32ProcessID,//指定的进程的ID LPCVOID lpBaseAddress, //指定进程的基地址 LPVOID lpBuffer, //缓冲区,用于保存数据 DWORD cbRead, //缓冲区的大小 LPDWORD lpNumberOfBytesRead //实际读到的数据 );
- CreateToolHelp32Snapshot函数获取系统快照
- 获取系统进程 CreateToolhelp32Snapshot
- CreateToolhelp32Snapshot获取系统进程
- CreateToolhelp32Snapshot 进程快照函数的应用实例
- windows下进程快照CreateToolhelp32Snapshot()函数的使用
- CreateToolhelp32Snapshot快照表
- CreateToolhelp32Snapshot 进程快照
- CreateToolhelp32Snapshot函数
- CreateToolhelp32Snapshot函数
- CreateToolhelp32Snapshot快照查看进程模块及线程
- CreateToolhelp32Snapshot()函数的使用
- 获取系统进程快照 c语言实现
- 获取系统进程快照 c语言实现
- 枚举当前系统进程--CreateToolhelp32Snapshot
- 获取系统进程信息和进程依赖的dll信息--CreateToolhelp32Snapshot
- CreateToolhelp32Snapshot函数的头文件
- CreateToolhelp32Snapshot
- CreateToolhelp32Snapshot
- ThinkPHP URL路由解析
- apue 1 课后习题
- CodeForces 366 E. Dima and Magic Guitar
- poj 1177 picture 线段树
- 推荐Linux新手应该访问的5个国外网站:
- CreateToolHelp32Snapshot函数获取系统快照
- acm--成绩处理
- Android VSync信号产生过程源码分析
- android 如何退出整个系统
- 静态方法和非静态方法的调用
- 并发编程之交换器Exchanger
- HTML相关
- Using UIPageControl as a container UIViewController
- boost重新编译