Windows 核心编程 第三章 笔记

        内核对象
别人的

内核对象是内核分配的一个内存块,只能由改内核访问;
内核对象由内核所拥有,进程创建了一个内核对象,然后进程终止运行,那么内核对象不一定被撤销,在大多数情况下,内核对象将被撤销,如果另一个进程正在使用你的进程创建的内核对象,那么在另一个进程停止前,内核对象不撤销。内核对象存在的时间可比创建该对象的进程长。


每个内核对象都包含一个使用计数,当一个内核对象创建时,他的使用计数被置为1,然后另一个进程访问内核对象时,使用计数就增加1,当进程终止时,内核检测该进程创建的内核对象的计数,若为0 则撤销该对象,否则不撤销。


调用一个函数创建内核对象时,如果调用失败通常返回0,CreateFile函数调用失败,返回INVILID_HANDLE_VALUE.


closehandle()关闭内核对象,系统会查看该内核对象的计数器,若为0 ,则撤销该内核对象。


将一个无效的句柄传递给CloseHanle(),如果进程运行正常则返回false,调用getlasterror返回ERROR_INVALID_HANDLE,


跨越进程边界共享内核对象:


1 文件映射对象使你能够在同一台机器上不同进程间共享数据块
2 邮箱和指定的管道使应用程序能够在联网的不同机器上进程间发送数据块
3 互斥对象 使线程同步




父进程创建的内核对象,如果要让子进程继承,需向系统声明希望创建的句柄是一个可继承的句柄。要创建能继承的句柄,必须制定一个SECURITY_ATTRIBUTES 结构并对他进行初始化,然后把该结构体的地址传递给create函数。系统会复制父进程句柄表里创建的能够被继承的对象到子进程。


DuplicateHandle() 函数复制对象句柄










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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值