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

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

时间:2024-10-24 12:21:41浏览次数:7  
标签:Node return 重合 二叉树 Extent ReactOS NULL AddressSpace

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

PMEMORY_AREA NTAPI MmLocateMemoryAreaByRegion(
PMADDRESS_SPACE AddressSpace,
PVOID Address,
ULONG_PTR Length
);


MmLocateMemoryAreaByRegion


/***************************************************************************************/
//在一个空间中寻找与给定地址范围重合或部分重合的(已分配)区间
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

标签:Node,return,重合,二叉树,Extent,ReactOS,NULL,AddressSpace
From: https://blog.csdn.net/zhyjhacker/article/details/143205842

相关文章

  • ReactOS系统中平衡二叉树。给定地址超导其所属区块MmFindRegion()
    系列文章目录PMM_REGIONNTAPIMmFindRegion(PVOIDBaseAddress,PLIST_ENTRYRegionListHead,PVOIDAddress,PVOID*RegionBaseAddress);宏函数//给定地址找到其中所属区块#defineCONTAINING_RECORD(address,type,field)((typeFAR*\(PCHAR)(address)-(PCH......
  • 力扣 简单 111.二叉树的最小深度
    文章目录题目介绍题解题目介绍题解最小深度:从根节点到最近叶子结点的最短路径上节点数量。分三种情况讨论即可:当前节点为空,则返回当前节点minDepth=0;当前节点左右子树都存在,则返回当前节点minDepth=左右子树最小深度的最小值+1;当前节点的左右子树其中一个不存......
  • 二叉树路径问题模板总结
    二叉树路径问题模板总结文章目录二叉树路径问题模板总结问题分类1、自顶向下257.二叉树的所有路径112.路径总和113.路径总和II437.路径总和III面试题04.12.求和路径998.从叶节点开始的最小字符串2、非自顶向下543.二叉树的直径124.二叉树中的最大路径和687.最长同值路径......
  • P1040 [NOIP2003 提高组] 加分二叉树
    P1040[NOIP2003提高组]加分二叉树题目描述设一个\(n\)个节点的二叉树\(\text{tree}\)的中序遍历为\((1,2,3,\ldots,n)\),其中数字\(1,2,3,\ldots,n\)为节点编号。每个节点都有一个分数(均为正整数),记第\(i\)个节点的分数为\(d_i\),\(\text{tree}\)及它的每个子树都有一......
  • 全局平衡二叉树学习笔记
    先挂一张jijidawang的图所以学这玩意就是被TopTree薄纱的有人把这玩意叫静态的LCT,然而可能只需要一些LCT的知识,并不需要会LCT。起码我不会注意这叫GBT,不叫GPT,能聊天的那个是CatGPT,不是CatGBT。前置知识:树链剖分用途\(O(\logn)\)处理树上链修改、链查询、子树修改、子树查......
  • 10/22二叉树 求度为1的结点个数
    includeusingnamespacestd;typedefstructBiNode{chardata;structBiNode*lchild,*rchild;}BiTNode,*BiTree;voidCreateBiTree(BiTree&T)//创建一个二叉树{charch;cin>>ch;if(ch=='#')T=NULL;else{T=newBiTNode;T->da......
  • 10.22随笔,二叉树求度为一的节点的个数
    今天去健身房锻炼了身体这是关于二叉树如何求度为一的节点的个数,同理还能求度为零和二的,不难。还又复习了一遍前序中序后续的遍历方法,已经可以由任意两种推出二叉树结构了,不过二叉树的样子和模式我还是有点不太能和代码结合去理解,还需要多加练习include<stdio.h>include<std......
  • 计算法统计二叉树中度为1的节点个数
    最近学习有关于二叉树类的知识,学习时使用的是C语言。代码如下:include<stdio.h>include<stdlib.h>//添加这一行,包含malloc的声明typedefstructTreeNode{intval;structTreeNode*left;structTreeNode*right;}TreeNode;//创建树节点TreeNode*createNode(in......
  • 统计二叉树中度为1的结点个数
    `classTreeNode{intval;TreeNodeleft;TreeNoderight;TreeNode(intval){this.val=val;this.left=null;this.right=null;}}classBinaryTree{publicstaticintcountNodesWithDegreeOne(TreeNoderoot){if(root==null){return0;......
  • PTA 生成格雷码 | C++ | 二叉树
    格雷码是一种包含2n个数串的序列,这种序列:1不存在重复的元素,2每个元素都是长度为n的二进制数串,3相邻元素只有一位不同。例如,长度为23的格雷码为:000,001,011,010,110,111,101,100。请使用分治法构造格雷码。提示,使用分治法构造格雷码,详见百度百科。输入格式:输入一个正整数n(1<=......