createtoolhelp32snapshot是否能获取64位进程快照

createtoolhelp32snapshot是否能获取64位进程快照,第1张

1 *** 作进程快照

1)Process32First函数

[cpp] view plaincopy

BOOL WINAPI Process32First(

HANDLE hSnapshot,

LPPROCESSENTRY32 lppe );

功能:获取进程快照列表的第一个进程状态信息。

参数:hSnapshot为快照句柄;lppe参数为指向PROCESSENTRY32结构体的指针,该结构体的形式如下:

[cpp] view plaincopy

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函数

[cpp] view plaincopy

BOOL WINAPI Process32Next(

HANDLE hSnapshot,

LPPROCESSENTRY32 lppe );

功能:该函数获取进程快照列表中的下一个进程状态信息,该函数返回TRUE,表示成功获取;返回FLASE,表示失败。

2 *** 作线程快照

1)Thread3First含糊

[cpp] view plaincopy

BOOL WINAPI Thread32First(

HANDLE hSnapshot,

LPTHREADENTRY32 lpte );

功能:获取快照列表中的第一个线程的状态信息。

参数:hSnapshot为系统快照句柄;lpte为一个指向THREADENTRY32结构体的指针,该结构的形式如下:

[cpp] view plaincopy

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函数

[cpp] view plaincopy

BOOL WINAPI Thread32Next(

HANDLE hSnapshot,

LPTHREADENTRY32 lpte );

功能:获取快照列表中的下一个线程快照状态信息。

3 *** 作堆快照

1)Heap32First函数

[cpp] view plaincopy

BOOL WINAPI Heap32First(

HANDLE hSnapshot,

LPHEAPENTRY32 lphe,

DWORD th32ProcessID,

DWORD th32HeapID );

该函数:获取快照中响应的堆。

参数:

[cpp] view plaincopy

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函数

[cpp] view plaincopy

BOOL WINAPI Heap32Next(

HANDLE hSnapshot,

LPHEAPENTRY32 lphe );

3)Heap32LitFirst函数

[cpp] view plaincopy

BOOL WINAPI Heap32ListFirst(

HANDLE hSnapshot,

LPHEAPLIST32 lphl );

参数:

[cpp] view plaincopy

typedef struct tagHEAPLIST32 {

DWORD dwSize;//结构体大小

DWORD th32ProcessID; //进程ID

DWORD th32HeapID; //堆栈标识符

DWORD dwFlags; //保留,为0

} HEAPLIST32;

typedef HEAPLIST32 PHEAPLIST32;

typedef HEAPLIST32 LPHEAPLIST32;

4)Heap32ListNext函数

[cpp] view plaincopy

BOOL WINAPI Heap32ListNext(

HANDLE hSnapshot,

LPHEAPLIST32 lphl );

4 *** 作模块快照

1)Module32First函数

[cpp] view plaincopy

BOOL WINAPI Module32First(

HANDLE hSnapshot,

LPMODULEENTRY32 lpme );

功能:从系统快照中获取第一个模块信息。

参数:lpme为指向MODULEENTRY32结构体的指针,其形式如下:

[cpp] view plaincopy

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函数

[cpp] view plaincopy

BOOL WINAPI Module32Next(

HANDLE hSnapshot,

LPMODULEENTRY32 lpme );

5Toolhelp32ReadProcessMemory 函数获得指定进程中指定内存区域的数据。

页面文件(pagefilesys)也称虚拟内存,就是在硬盘上拿出(设定出)一部分空间作为暂不被调用程序或叫“惰性”程序及相关数据的临时存放空间。因内存容量总是有限,而实际运行的程序会很多,若都塞在内存中会大量占用有限的内存资源,不利于系统正常、快速、流畅地调用、运行急需的程序及数据。于是系统就开辟出一部分硬盘空间将惰性程序及相关数据暂时存放于此,而让即将被调用的程序或称“活性”程序及数据存留在内存中方便马上调用;而页面文件中暂存的“惰性程序”及数据待CPU需要调用时再与内存交互,如此即为页面文件的工作原理。页面文件像内存一样起到中间暂存、交换作用又是硬盘空间的一部分,所以又叫虚拟内存。

2。

页面文件如同文件夹中常见文件一样,是实实在在存在的文件,只是为安全起见系统将其默认为隐藏文件,显示后一般可在系统盘根目录中见到名为pagefilesys的文件,它就是页面文件。

3。

要修改页面文件(虚拟内存)的存放位置及大小,对XP而言:可在“我的电脑”上右击选“属性”—“高级”选项卡里的“性能”选项框中—“设置”—“高级”—“虚拟内存”框中—“更改”即来到虚拟内存设置窗口(WIN2000进入类似)。要先确定你的页面文件在哪个驱动器盘符,然后将别的盘符驱动器的页面文件全部禁用,可保留一个页面文件。微软的默认设置是,页面文件最小值应为物理内存的15倍,最大值为2-3倍。我的设置建议是同意微软的默认设置,不需要另设它值。若物理内存为1G又觉得15倍的最小值设置占硬盘空间较大,最小值可设为1G即物理内存的1倍,以后若出现问题则改回默认设置;最大值默认即可。因页面文件的使用是由小至大、逐渐增加的过程,若最小值范围内可正常运行、交互,系统就不会再增大到最大值的程度。

4。

页面文件最好单独设置在一个盘符里(我的机器就设置到了F盘中),如此能使系统调用虚拟内存中的程序及数据时能更快速、更流畅。还有,变更页面文件的位置之前最好能对相应盘符进行磁盘碎片整理,以使页面文件连续、规律地存放利于快速读取。

以上就是关于createtoolhelp32snapshot是否能获取64位进程快照全部的内容,包括:createtoolhelp32snapshot是否能获取64位进程快照、什么是页面文件和快照、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9436881.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存