urenai 发表于 2024-3-5 22:23:05

希望斟酌

本帖最后由 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_)   根本就没必要。











创世魂 发表于 2024-3-6 08:04:16

没看明白。。

urenai 发表于 2024-3-6 11:53:55

本帖最后由 urenai 于 2024-3-6 11:59 编辑

创世魂 发表于 2024-3-6 08:04
没看明白。。
https://bbs.voldp.com/data/attachment/forum/202403/05/65e7361b879d7.png
typedef unsigned int MyUint32;允许用户自己定义数据别名类型
@定义数据类型别名的类,不允许有 变量、方法、常量。

翻译完 也就是 一行代码就OK了
页: [1]
查看完整版本: 希望斟酌