递归火山软件开发平台

标题: 希望斟酌 [打印本页]

作者: urenai    时间: 2024-3-5 22:23
标题: 希望斟酌
本帖最后由 urenai 于 2024-3-5 23:11 编辑
  1. <火山程序 类型 = "通常" 版本 = 1 />

  2. 类 内存_基本信息 <公开 基础类 = 本地结构模板 @别名 = "MEMORY_BASIC_INFORMATION" @模板实现类 = "内存_基本信息">
  3. {
  4.     变量 区域基地址 <公开 类型 = 通用指针 @输出名 = "BaseAddress">
  5.     变量 分配基地址 <公开 类型 = 通用指针 @输出名 = "AllocationBase">
  6.     变量 原始保护 <公开 类型 = 无符号整数 @输出名 = "AllocationProtect">
  7.     变量 "//分区ID" <公开 类型 = 无符号短整数 @输出名 = "PartitionId">
  8.     变量 区域大小 <公开 类型 = 无符号尺寸 @输出名 = "RegionSize">
  9.     变量 状态 <公开 类型 = 无符号整数 @输出名 = "State">
  10.     变量 保护 <公开 类型 = 无符号整数 @输出名 = "Protect">
  11.     变量 类型 <公开 类型 = 无符号整数 @输出名 = "Type">

  12.     #
  13. }
复制代码
  1. <火山程序 类型 = "通常" 版本 = 1 />

  2. 变量 s <类型 = 内存_基本信息 @输出名 = "mem_">
  3. 虚拟.取信息Ex (_取自进程伪句柄 (), s.取地址 ().到变整数 (), s)

  4. 调试输出 (s.区域基地址.到变整数 ())
复制代码
  1.     MEMORY_BASIC_INFORMATION mem_;
  2.     ZERO_MEM (&mem_, sizeof (mem_));
  3.     ::VirtualQueryEx((HANDLE)((INT_P)::GetCurrentProcess()),(LPVOID)(INT_P)((void*)&mem_),&mem_,sizeof(MEMORY_BASIC_INFORMATION));
  4.     _DEBUG_STATMENT (DebugTrace (FALSE, 0, 0, _T ("n"), (INT_P)mem_.BaseAddress));
复制代码

结构体基本上算是彻底搞定了。就是定义基础数据类型还是超级无敌蛋疼。
  1. <火山程序 类型 = "通常" 版本 = 1 />

  2. 类 对象句柄 <公开 基础类 = 扩展整数型模板 折叠2 @别名 = "HANDLE" @模板实现类 = "对象句柄">
复制代码
因为根本没法直接使用,举例说: A(HANDLE   P)  , 你要想入参,你得先定义个变量,再给变量赋值,在用变量入参。
还不能强转。。。。

为什么就不能直接:
  1. typedef unsigned int MyUint32;
复制代码
(, 下载次数: 40)
????
孬好还能强转了继续使用。
希望斟酌一下,开放允许自己定义类型,定义火山数据类型。
你把数据类型卡的死死的,来回真的好累,你看看上面 (LPVOID)(INT_P)((void*)&mem_)   根本就没必要。












作者: 创世魂    时间: 2024-3-6 08:04
没看明白。。
作者: urenai    时间: 2024-3-6 11:53
本帖最后由 urenai 于 2024-3-6 11:59 编辑
创世魂 发表于 2024-3-6 08:04
没看明白。。


  1. typedef unsigned int MyUint32;
复制代码
允许用户自己定义数据别名类型
@定义数据类型别名  的类,不允许有 变量、方法、常量。

翻译完 也就是 一行代码就OK了





欢迎光临 递归火山软件开发平台 (https://bbs.voldp.com/) Powered by Discuz! X3.4