内核对象介绍

一. 常见的内核对象
(1) 进程 & 线程 & 访问令牌 & 文件 & 文件映射 & I/O完成端口 & 邮槽 & 管道 & 互斥体 &
   信号量 & 事件 & 计时器 & 线程池

(2) 内核对象是跨进程的, <类似如全局变量> , 比如需要进行进程间的同步,数据共享

(3) 进程内核对象句柄表
    (3.1) 当一个进程初始化时,系统会为它分配一张内核对象句柄表。这个表只用于管理内核对象句柄。
         GDI和用户对象不会影响到这张表。表中的每一项有4个域。  即句柄ID,对象内存地址,访问屏蔽位,标志位。

(4) 每个内核对象都有一个引用计数, CloseHandle() 只有等这个内核对象的引用计数为<0>才会被销毁

(5) 每个对象在创建时都有一个安全属性 <可读 | 可写 | 对象的权限>

(6) 每个内核对象都有一个安全描叙符

(7) 程序结束后也没有CloseHandle(), 创建的这个内核对象也不会被系统释放掉;

(8) 内核都是由系统管理

 

二. 内核对象使用的流程

(1) 创建对象: CreateXXXXXXX()

(2) 打开对象, 得到句柄<可以和第一步合在一起>

(3) 通过API访问对象

(4) 关闭句柄

(5) 句柄全部关闭,对象自动销毁

三. 内核对象的跨进程访问:
(1) 访问别另一个内核对象的条件: 自己进程的句柄表中, 有一项指向要访问的对象  

(2) 三种方式实现跨进程访问对象:
    (2.1) 父进程创建子进程时, 子进程会继承父进程的句柄表 <>
    (2.2) 通过对象名,ID标识
    (2.3) 使用DuplicateHandle() 将一个句柄从一个进程传递到另一个进程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值