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

win32相关(句柄表)

句柄表


什么是内核对象

常见的内核对象类型

对象类型Windows示例Linux对应概念
进程对象EPROCESStask_struct
线程对象ETHREADtask_struct
文件对象FILE_OBJECTfile结构体
事件对象KEVENTeventfd
互斥体KMUTEXmutex
信号量KSEMAPHOREsemaphore
共享内存SECTION_OBJECTshm相关结构
每创建一个内核对象,都会在内核层创建一个对应的内核结构体

如何管理内核对象

由于我们是在内核层创建的内核结构体,当我们需要使用到内核结构体中的数据时,操作系统是不允许我们直接访问内核地址空间的

通过句柄表来解决问题

在这里插入图片描述

只要想对内核对象进行操作,都必须要通过句柄来进行访问


多个进程共享一个内核对象

通过OpenProcess可以打开一个别人已经创建好的对象

在这里插入图片描述

注:有一个内核结构体是特殊的,那就是线程结构体对象,如果要把线程内核结构体杀死,首先需要关闭这个线程,然后对应的线程内核记数器为0


句柄是否可以被继承

这种方式同样也可以实现多个进程共享一个内核对象

在这里插入图片描述

在上面的句柄表中,还有一个参数,表示该内核结构体是否可以被继承,设置为可被继承后,继承的内核对象也可以访问它的内核结构体

子进程继承父进程的句柄表的关系

在这里插入图片描述

只有当父进程中创建的内核对象设置为可被继承时,子进程再去继承父进程时,才能看到被设置为可被继承的内核结构体

总结:两种共享内核的解决方案(1.OpenProcess打开一个进程,2.父进程中创建子进程,并设置为允许继承)

http://www.xdnf.cn/news/609499.html

相关文章:

  • 【Mini-F5265-OB开发板试用测评】2、关于platform.c中的串口号初始化修改的建议
  • GO语言学习(九)
  • Flask项目打开总是上一个项目的网页
  • 短视频与直播场景下的美颜SDK优化方案:滤镜与特效如何平衡性能与美感?
  • 精益数据分析(80/126):病毒式传播系数实战计算与增长策略优化
  • 中电金信X中远海科推出“银航宝”解决方案,共绘航运金融新图景
  • Python Scikit-Learn核心流程
  • Vue3中的TSX:用函数式思维构建现代组件的实践指南
  • 基于vite构建的vue项目添加路由时注意要利用import.meta.glob映射构建生成后的路径
  • 计算机网络学习(三)——HTTP
  • 详解Mysql的快照读和当前读区别
  • 基于BERT预训练模型(bert_base_chinese)训练中文文本分类任务(AI老师协助编程)
  • 25年上半年五月之软考之设计模式
  • Linux基本指令(二)
  • 【Linux】基础开发工具(下)
  • Android正则表达式
  • Android中ServiceManager与Binder驱动的关系
  • java 进阶 1.0.3
  • 使用 Elasticsearch 和 Red Hat OpenShift AI 提升工作流程效率
  • C#日期和时间:DateTime转字符串全面指南
  • leetcode513.找树左下角的值:递归深度优先搜索中的最左节点追踪之道
  • Typescript学习教程,从入门到精通,TypeScript 集合类型语法知识点及案例代码(11)
  • 前缀和数组一文详解
  • Vue3.5 企业级管理系统实战(二十):角色菜单
  • JDK21全景图:关键特性与升级价值
  • AI预测3D新模型百十个定位预测+胆码预测+去和尾2025年5月23日第86弹
  • 如何轻松擦U盘? (3个解决方案)
  • AI Study,学习计划
  • 2024 CKA模拟系统制作 | Step-By-Step | 3、CKA考试系统的技术设置
  • 基于SpringBoot的网上租赁系统设计与实现