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

系列文章目录

PMM_REGION NTAPI MmFindRegion(

PVOID BaseAddress,

PLIST_ENTRY RegionListHead,

PVOID Address,

PVOID* RegionBaseAddress

);

宏函数

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

c 复制代码
#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
相关推荐
张小姐的猫1 天前
【MySQL】访问 & 数据流动原理
android·数据库·mysql·adb·1024程序员节
工业HMI实战笔记2 天前
印刷电路板HMI:SMT贴装的元件定位界面
制造·设计规范·设计语言·1024程序员节
Martina_03212 天前
AI生成3D模型一合并网格,材质就串色?用6步检查材质槽、UV与图集重映射
图像处理·人工智能·3d·材质·uv·游戏策划·1024程序员节
橙光成长2 天前
android-ad-cleaner:android免 Root 批量关闭系统开屏与营销推送
android·1024程序员节
燃烧的枫3 天前
Windows 下 YOLO11 Pose 的 TensorRT C++ 部署
windows·yolo·tensorrt·1024程序员节·yolo11-pose
AI日报派送佬3 天前
2026年11月02日 AI 行业日报|商汤开源 Loop-9B、Pika 发布 H3 Flex 音视频模型、Meta× 傅利叶推出人形机器人 Max
人工智能·微软·开源·音视频·openai·1024程序员节·ai日报
avi91113 天前
【AI教人】UnityEditor扩展Spine动画,Spine骨骼,预览Preview一切
spine·骨骼动画·1024程序员节·editor扩展·spine动画·spine骨骼
开开心心就好3 天前
网页图片批量下载工具,输入链接就保存
服务器·算法·leetcode·支持向量机·pdf·ocr·1024程序员节
Martina_03214 天前
AI生成的3D模型打印后沿层纹开裂?用6步检查方向、壁厚与填充
图像处理·人工智能·数学建模·3d·自然语言处理·游戏策划·1024程序员节