ReactOS系统中平衡二叉树,在一个空间中寻找与给定地址范围重合或部分重合的(已分配)区间

在一个空间中寻找与给定地址范围重合或部分重合的(已分配)区间

PMEMORY_AREA NTAPI MmLocateMemoryAreaByRegion(

PMADDRESS_SPACE AddressSpace,

PVOID Address,

ULONG_PTR Length

);


MmLocateMemoryAreaByRegion

c 复制代码
/***************************************************************************************/
//在一个空间中寻找与给定地址范围重合或部分重合的(已分配)区间
PMEMORY_AREA STDCALL MmLocateMemoryAreaByRegion(PMADDRESS_SPACE AddressSpace,
    PVOID Address, ULONG_PTR Length)
{ 
    PMEMORY_AREA Node;
    PVOID Extent = (PVOIDK(ULONG_PTR)Address + Length);//地址范围的终点
    MmVerifyMemoryAreas(AddressSpace);//检测该AVL树是否存在问题
    /*Special ease for empty tree.*/
    if (AddressSpace->MemoryAreaBoot == NULL)
        return NULL;
    /* Traverse the tree from left to right.*/
    for (Node = MmIterateFirstNode(AddressSpace->MemoryAreaRoot);
        Node!= NULL;Node = MmIterateNextNode(Node))
    {
        if (Node->StartingAddress >= Address && Node->StartingAddress < Extent)
            return Node;//部分重合,区间的起点落在给定范围之内
        if (Node->EndingAddress > Address && Node->EndingAddress < Extent)
            return Node;//部分重合,区间的终点落在给定范围之内
        if (Node->StartingAddress <= Address && Node->EndingAddress >= Extent)
            return Node;//全部重合,给定范围落在区间之内
       if(Node->StartingAddress >= Extent)
            return NULL;
} //end for
return NULL;
}

c
相关推荐
代码雕刻家6 分钟前
1.9.课设实验-数据结构-图-校园跑最短路径
c语言·数据结构·算法·图论
white-persist20 分钟前
【攻防世界】reverse | re1-100 详细题解 WP
c语言·开发语言·网络·汇编·python·算法·网络安全
.YM.Z34 分钟前
【数据结构】:排序(二)——归并与计数排序详解
数据结构·算法·排序
武帝为此35 分钟前
【数据结构之树状数组】
数据结构·算法
失败才是人生常态36 分钟前
算法题归类学习
学习·算法
Irene199137 分钟前
VSCode 内置终端 和 系统自带终端 的主要区别
windows·vscode·终端
infiniteWei1 小时前
【VIM 入门到精通】第1节:揭开Vim的神秘面纱:入门与基础操作
linux·编辑器·vim
leoufung1 小时前
用 DFS 拓扑排序吃透 LeetCode 210:Course Schedule II
算法·leetcode·深度优先
卌卄1 小时前
Linux下安装Docker
linux·运维·docker
chao1898441 小时前
电容层析成像Tikhonov算法
算法