|
本帖最后由 urenai 于 2024-3-5 23:11 编辑
- <火山程序 类型 = "通常" 版本 = 1 />
- 类 内存_基本信息 <公开 基础类 = 本地结构模板 @别名 = "MEMORY_BASIC_INFORMATION" @模板实现类 = "内存_基本信息">
- {
- 变量 区域基地址 <公开 类型 = 通用指针 @输出名 = "BaseAddress">
- 变量 分配基地址 <公开 类型 = 通用指针 @输出名 = "AllocationBase">
- 变量 原始保护 <公开 类型 = 无符号整数 @输出名 = "AllocationProtect">
- 变量 "//分区ID" <公开 类型 = 无符号短整数 @输出名 = "PartitionId">
- 变量 区域大小 <公开 类型 = 无符号尺寸 @输出名 = "RegionSize">
- 变量 状态 <公开 类型 = 无符号整数 @输出名 = "State">
- 变量 保护 <公开 类型 = 无符号整数 @输出名 = "Protect">
- 变量 类型 <公开 类型 = 无符号整数 @输出名 = "Type">
- #
- }
复制代码- <火山程序 类型 = "通常" 版本 = 1 />
- 变量 s <类型 = 内存_基本信息 @输出名 = "mem_">
- 虚拟.取信息Ex (_取自进程伪句柄 (), s.取地址 ().到变整数 (), s)
- 调试输出 (s.区域基地址.到变整数 ())
复制代码- MEMORY_BASIC_INFORMATION mem_;
- ZERO_MEM (&mem_, sizeof (mem_));
- ::VirtualQueryEx((HANDLE)((INT_P)::GetCurrentProcess()),(LPVOID)(INT_P)((void*)&mem_),&mem_,sizeof(MEMORY_BASIC_INFORMATION));
- _DEBUG_STATMENT (DebugTrace (FALSE, 0, 0, _T ("n"), (INT_P)mem_.BaseAddress));
复制代码
结构体基本上算是彻底搞定了。就是定义基础数据类型还是超级无敌蛋疼。- <火山程序 类型 = "通常" 版本 = 1 />
- 类 对象句柄 <公开 基础类 = 扩展整数型模板 折叠2 @别名 = "HANDLE" @模板实现类 = "对象句柄">
复制代码 因为根本没法直接使用,举例说: A(HANDLE P) , 你要想入参,你得先定义个变量,再给变量赋值,在用变量入参。
还不能强转。。。。
为什么就不能直接:
- typedef unsigned int MyUint32;
复制代码
????
孬好还能强转了继续使用。
希望斟酌一下,开放允许自己定义类型,定义火山数据类型。
你把数据类型卡的死死的,来回真的好累,你看看上面 (LPVOID)(INT_P)((void*)&mem_) 根本就没必要。
|
|