极语言官方网站

内存读写——使用示例

内存读写——相关函数

中文名称英文名称示例作用
全局计数GlobalFlags全局计数(内存)检索有关指定全局内存对象的分配值和锁定计数。
全局指针GlobalHandle全局指针(内存)检索与指向全局内存块的指定指针关联的句柄。
堆块首个Heap32First堆块首个(堆块类,进程号,堆号)检索有关进程分配的堆的第一个块的信息。
堆存首个Heap32ListFirst堆存首个(快照,堆表类)检索有关指定进程分配的第一个堆的信息。
堆存下个Heap32ListNext堆存下个(快照,堆表类)检索有关指定进程分配的第一个堆的信息。
堆块下个Heap32First堆块下个(堆块类)检索有关进程已分配的堆的下一个块的信息。
局部分配LocalAlloc局部分配(方式,大小)从堆中分配指定的字节数。方式:0固定,2可移动,0x40初始化为零
局部计数LocalFlags局部计数(内存)检索有关指定局部内存对象的分配值和锁定计数。
局部指针LocalHandle局部指针(内存)检索与指向局部内存块的指定指针关联的句柄。
局部释放LocalFree局部释放(内存)释放指定的局部内存对象并使其空间无效
局部锁定LocalLockbuf=局部锁定(内存)返回指定的局部内存对象第一个字节的指针
局部更改LocalReAlloc局部更改(内存,大小,方式)更改指定的局部内存对象的大小或方式:0固定,2可移动,0x40初始化为零
局部大小LocalSizeln=局部大小(内存)获取指定的局部内存对象的当前大小
局部解锁LocalUnlock局部解锁(内存)取消指定的局部内存对象关联的内存分配空间
全局内存GlobalMemoryStatus全局内存(内存信息类)获取当前可用的物理和虚拟内存信息
全局分配GlobalAlloc内存=全局分配(方式,大小)从堆中分配指定的字节数内存。0固定,2可移动,$40初始化零
全局释放GlobalFree全局释放(内存)释放指定的全局内存对象并使其空间无效
全局锁定GlobalLockbuf=全局锁定(内存)返回指定的全局内存对象第一个字节的指针
全局更改GlobalReAlloc全局更改(内存,大小,方式)更改指定的全局内存对象的大小或属性
全局大小GlobalSize长度=全局大小(内存)获取指定的全局内存对象的当前大小
全局解锁GlobalUnlock全局解锁(内存)取消指定的全局内存对象关联的内存分配空间
进程堆址GetProcessHeap堆=进程内存获取本进程使用的堆对象
进程全堆GetProcessHeaps进程全堆(堆数,数组)获取本进程有效的所有堆的句柄
内存创建HeapCreate堆=内存创建(方式,大小,最大)创建本进程使用的堆对象,用来分配物理内存,方式1不互斥,4报告异常
内存分配HeapAlloc内存=内存分配(堆,方式,大小)从堆中分配一个不可移动的内存块。方式1不互斥,8初始化零,4报告异常
内存压缩HeapCompact内存压缩(堆,方式)尝试压缩指定的堆。合并相邻空闲内存,并消除大的可用内存块,方式1不互斥
内存销毁HeapDestroy内存销毁(堆)销毁指定的堆对象及其内存页面
内存释放HeapFree内存释放(堆,方式,内存)释放指定堆的内存页面
内存锁定HeapLock内存锁定(堆)锁定堆只有调用线程才能从堆中分配或释放内存
内存重建HeapReAlloc内存重建(堆,方式,内存,大小)从堆中重新分配一块内存,方式1不互斥,8初始化零,4报告异常,$10保留原数据
内存大小HeapSize大小=内存大小(堆,方式,内存)获取堆分配的内存块的大小
内存解锁HeapUnlock内存解锁(堆)解除指定堆相关联的关键部分对象的锁定
内存验证HeapValidate内存验证(堆,方式,内存)用来验证堆的完整性(内存为0)或堆中某块内存的完整性,方式1不互斥
内存枚举HeapWalk内存枚举(堆,信息)枚举指定堆中的内存块
内存摘要HeapDestroy内存销毁(堆,方式,摘要)汇总指定的堆
内存可读IsBadReadPtr内存可读(内存,大小)判断指定范围内存地址是否可读
内存可写IsBadWritePtr内存可写(内存,大小)判断指定范围内存地址是否可写
内存填充RtlFillMemory内存填充(地址,长度,值)使用指定的数值填充内存块。
传送内存RtlMoveMemory传送内存(目的,原址,n)在原址复制 n 个字节到目的地址中,两者可以有重叠
内存清零RtlZeroMemory内存清零(地址,长度)用0来填充一块内存区域
虚拟内存VirtualAlloc地址=虚拟内存(地址,大小,分类,保护)
申请内存,内存申请,堆申请,全局/局部分配
这些申请内存的方法,并没有本质上的不同
在虚拟地址空间中保留或提交一个页面区域。分配的内存将自动初始化为零
虚拟空间VirtualAllocEx地址=虚拟空间(进程,地址,大小,分类,保护)在指定进程虚拟地址空间中保留或提交一个页面区域。分配的内存将自动初始化为零
新申请地址写0,扩充时可保留原数据.分类=分配类型$1000新分配,$2000保留
保护1禁用2只读4读写$10可执行$20执行读$40执行读写
虚拟释放VirtualFree虚拟释放(地址,大小,操作)虚拟地址空间中释放或分解内存,操作$4000分解$8000释放(大小为0)
空间释放VirtualFreeEx空间释放(进程,地址,大小,操作)在指定进程的虚拟地址空间中释放或分解内存,操作$4000分解$8000释放(大小为0)
虚拟锁定VirtualLock虚拟锁定(地址,大小)虚拟地址空间的指定区域锁定到内存中
虚拟保护VirtualProtect虚拟保护(地址,大小,保护,@旧)更改调用进程虚拟地址空间中已提交页面的访问保护(读写权限)
空间保护VirtualProtectEx空间保护(进程,地址,大小,保护,@旧)更改指定进程虚拟地址空间中已提交页面的访问保护(读写权限)
虚拟查询VirtualQuery虚拟查询(地址,结构,大小)查询虚拟地址空间中的一系列页面的信息
空间查询VirtualQueryEx空间查询(地址,结构,大小)查询虚拟地址空间中的一系列页面的信息
虚拟解锁VirtualUnlock虚拟解锁(地址,大小)解锁进程的虚拟地址空间中的指定范围的页面
读取内存ReadProcessMemory读取内存(进程,地址,内容,长度,@已读)读取指定进程地址的内存数据
写入内存WriteProcessMemory写入内存(进程,地址,内容,长度,@已写)把数据写入指定进程的指定地址

内存信息类
中文名字英文名称长度作用解释
内存信息类MEMORYSTATUS32包含了当前计算机的信息。函数GlobalMemoryStatus
内存信息类——成员表
长度dwiLength整数结构的大小,初始设置为32长度
使用率dwMemoryLoad整数返回一个介于0~100之间的值,用来指示当前系统内存的使用率。
物理内存dwTotalPhys整数返回总的物理内存大小,以字节(byte)为单位。
可用内存dwAvailPhys整数返回可用的物理内存大小,以字节(byte)为单位。
交换文件dwTotalPageFile整数显示可以存在页面文件中的字节数。
空闲文件dwAvailPageFile整数返回可用的页面文件大小,以字节(byte)为单位。
可用地址dwTotalVirtual整数返回调用进程的用户模式部分的全部可用虚拟地址空间
空闲地址dwAvailVirtual整数返回调用进程的用户模式部分的实际自由可用的虚拟地址空间

堆表类
中文名字英文名称长度作用解释
堆表类HEAPLIST3216描述列表中枚举指定进程使用的堆的条目。
堆表类 成员表
中文英文类型作用解释
大小dwSize整数结构大小(以字节为单位)。
程号th32ProcessID整数使用堆的进程标识符。
堆号th32HeapID整数堆标识符。这不是句柄,仅对工具帮助函数有意义。
标志dwFlags整数1默认堆。

堆块类
1固定 (不可移动)。2不使用内存块。4可以移动。
中文名字英文名称长度作用解释
堆块类HEAPENTRY3236描述堆(块)正在检查的堆的一个条目。
堆块类 成员表
中文英文类型作用解释
大小dwSize整数结构大小(以字节为单位)。
指针hHandle整数堆块的句柄。
地址dwAddress整数块开头的线性地址。
块长dwBlockSize整数堆块的大小(以字节为单位)。
标志dwFlags整数
锁数dwLockCount整数此成员不再使用,并且始终设置为零。
预留dwResvd整数保留;请勿使用或更改。