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
相关推荐
数据皮皮侠AI10 小时前
数字经济政策工具变量数据(2008-2023)
大数据·数据库·人工智能·笔记·1024程序员节
网安_秋刀鱼1 天前
【java安全】shiro反序列化1(shiro550)
java·开发语言·安全·web安全·网络安全·1024程序员节
unable code3 天前
攻防世界-Misc-Wire1
网络安全·ctf·misc·1024程序员节
开开心心就好3 天前
版本转换工具,支持Win双系统零售批量版
linux·运维·服务器·pdf·散列表·零售·1024程序员节
开开心心就好4 天前
免费卸载工具,可清理残留批量管理启动项
linux·运维·服务器·windows·随机森林·pdf·1024程序员节
unable code4 天前
攻防世界-Misc-4-1
网络安全·ctf·misc·1024程序员节
yBmZlQzJ6 天前
免费内网穿透-端口转发配置介绍
运维·经验分享·docker·容器·1024程序员节
金融小师妹7 天前
AI算法视角下非农夜冲击波来袭,黄金高位区间震荡态势的深度神经网络解析
大数据·深度学习·1024程序员节
全栈小59 天前
【数据库】浙人医携手金仓数据库,打造全国首个多院区异构多活容灾架构
数据库·1024程序员节·金仓
CoderYanger11 天前
贪心算法:7.最长连续递增序列
java·算法·leetcode·贪心算法·1024程序员节