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

3.1.1 内核对用户空间的管理2,搜索目标地址所在的节点

3.1.1 内核对用户空间的管理2,搜索目标地址所在的节点

3.1.1 内核对用户空间的管理2,搜索目标地址所在的节点

文章目录

  • 3.1.1 内核对用户空间的管理2,搜索目标地址所在的节点
  • MmLocateMemoryAreaByAddress()函数的实现


MmLocateMemoryAreaByAddress()函数的实现

内核函数 MmLocateMemoryAreaByAddress()所实现的就是 AVL树的搜索算法。对于大小为N的 AVL树,在O(ogN)的时间中,如果代表着目标进程用户空间的 AVL,树中存在着包含目标地址的节点,就可以找到并返回这个节点,如果不存在就返回NULL。
源码截图
在这里插入图片描述

源代码
//搜索目标地址所在的节点

PMEMORY_AREA STDCALL
MmLocateMemoryAreaByAddress(PMADDRESS_SPACE AddressSpace,PVOID Address)
{PMEMORY_AREA Node = AddressSpace->MemoryAreaRoot;//获取用户空间的AVL树DPRINT("MmLocateMemoryAreaByAddress(AddressSpace %p, Address %p)\n",AddressSpace, Address);MmVerifyMemoryAreas(AddressSpace);//宏定义,定义为空
//循环检索   while (Node != NULL){if (Address < Node->StartingAddress)Node = Node->LeftChild;else if (Address >= Node->EndingAddress)Node = Node->RightChild;else{DPRINT("MmLocateMemoryAreaByAddress(%p): %p [%p - %p]\n",Address, Node, Node->StartingAddress, Node->EndingAddress);return Node;}}DPRINT("MmLocateMemoryAreaByAddress(%p): 0\n", Address);return NULL;
}

//判断这棵AVL树的每个结点的地址是否合法

MmVerifyMemoryAreas(AddressSpace);//宏定义,定义为空 

学过数据结构这门课程的读者都能理解这段程序,这里就不作解释了


http://www.mrgr.cn/news/53986.html

相关文章:

  • 案例分享—国外优秀UI卡片设计作品赏析
  • stable diffusion【win+Mac版】超详细安装教程(附stable diffusion 整合包)
  • 【Linux】进程间通信(匿名管道)
  • 什么是大数据分析:定义、优缺点、应用、机遇和风险
  • 实验报告3-数据库框架实现数据操作2
  • UE小:UE5的Pixelstreaming在捕获画面的时候没办法显示非Viewport的Slate区域按钮的ToolTip
  • 【英特尔IA-32架构软件开发者开发手册第3卷:系统编程指南】2001年版翻译,1-10
  • Scrapy | 通过模拟登录功能认识cookies参数及start_requests函数实现发送POST请求
  • Flux.from 使用说明书
  • 功能安全实战系列-软件FEMA分析与组件鉴定
  • 【C语言教程】【嵌入式编程】(一)介绍与前提条件(二)嵌入式编程基础(三)硬件基础知识(四)硬件寄存器操作
  • Linux下进行用户的切换与创建以及细微设置
  • 中华传承-医山命相卜-四柱八字
  • 基于STM32的智能交通灯控制系统设计与实现思路:LoRa、控制算法结合
  • stablediffusion 关于fp32、fp16和fp8是什么 分别有什么区别
  • AcWing1027
  • ◇【论文_20150225】 DQN_2015(nature) 〔Google DeepMind〕
  • 【Java基础】1、Java入门
  • 数据结构--栈和队列
  • 从零开始学PHP之安装开发环境
  • 单层卷积网络/简单卷积网络示例
  • GDAL+C#实现矢量多边形转栅格
  • 达梦数据守护集群_组分裂的数据恢复(一)
  • 架构设计笔记-22-论文
  • linux centos7系统ARM架构下安装最新版docker 27.3.1及docker-compose v2.3.4
  • “擒牛MACD“,很好用的抓强势波动指标,源码