当前位置: 首页 > news >正文

ReactOS系统中平衡二叉树。给定地址超导其所属区块MmFindRegion()

系列文章目录

PMM_REGION NTAPI MmFindRegion(
PVOID BaseAddress,
PLIST_ENTRY RegionListHead,
PVOID Address,
PVOID* RegionBaseAddress
);

宏函数
//给定地址找到其中所属区块

#define CONTAINING_RECORD(address,type,field) ((type FAR *\(PCHAR)(address)-(PCHAR)(&((type *)0)->field)))获取外层数据结构的指针```
@[TOC](文章目录)---# MmFindRegion()
```c
//给定地址超导其所属区块
PMM_REGION NTAPI 
MmFindRegion(PVOID BaseAddress, PLIST_ENTRY RegionListHead,PVOID Address, PVOID * RegionBaseAddress)
{PLIST_ENTRY current_entry;PMM_REGION current;PVOID StartAddress = BaseAddress;//搜索的起点current_entry = RegionListHead->Flink;//获得第一个MM REGION区块指针while (current_entry != RegionListHead)//遍历一个MEMORY AREA即某个区间的区块双向链表{//curren获得该指向该结构的首地址current = CONTAINING_RECORD(current entry, MM REGION, RegionListEntry);//若目标地址在(StartAddress ~startAddress+current->Length)说明找到了该地址所在区块if (StartAddress <= Address &&((char*)StartAddresS + current->Length) > (char*)Address) {//找到了if (RegionBaseAddress != NULL)*RegionBaseAddress = StartAddress;//将区块开始地址给RegionBaseAddress返回return(current);//返回该区块的结构信息currententry = current_entry->Flink://下一个区块StartAddress =(PVOID)((ULONG PTR)StartAddress + current->Length);return(NULL);}current_entry = current_entry->Flink;//下一个区块StartAddress = (PVOID)((ULONG_PTR)StartAddress + current->Length);}return (NULL);
}
c
http://www.lryc.cn/news/472625.html

相关文章:

  • 基于TESSY的单元测试与分类树方法深入解析
  • 整理了一些大模型的课程,非常详细,大模型零基础入门到精通,收藏我这一篇就够了
  • 区块链国赛题目--食品溯源(模块三)
  • 【Searxng】Searxng docker 安装
  • Java Lock/AQS ReentrantLock 源码
  • 魔法伤害--是谁偷走了我的0
  • 【ArcGIS Pro实操第4期】绘制三维地图
  • Vuestic 整理使用
  • 学习伊圣雨老师的 epoll 编程
  • 详细了解C++11(1)
  • ITA的去锅盖处理流程
  • 日志管理系统的系统目标是什么?
  • uniapp 底部导航栏tabBar设置后不显示的问题——已解决
  • JVM 类加载器
  • 《C++长时间运行程序:驯服内存膨胀的“怪兽”》
  • ELK之路第二步——可视化界面Kibana
  • Nature Medicine病理AI汇总|CONCH:病理图像分析的零样本学习模型·顶刊精析·24-10-30
  • 通过不当变更导致 PostgreSQL 翻车的案例分析与防范
  • Windows高级技巧:轻松实现多进程窗口的连接与管理
  • 洪水淹没制图
  • PHP的 CSRF、XSS 攻击和防范
  • 怎么在线制作活码?二维码活码的简单制作技巧
  • Lua中实现异步HTTP请求的方法
  • 拓展学习-golang的基础语法和常用开发工具
  • 得计算题者得天下!软考系统集成计算题详解!
  • 在AdaBoost中每轮训练后,为什么错误分类的样本权重会增大e^2αt倍
  • 什么是数据中心?
  • 【工具使用】VSCode如何将本地项目关联到远程的仓库 (vscode本地新项目与远程仓库建立链接)
  • 安全见闻-二进制与网络安全的关系
  • MongoDB 部署指南:从 Linux 到 Docker 的全面讲解