Windows程序设计- 内核对象

本文介绍内核对象作为用户模式与内核模式交互的基本接口的作用,包括为系统资源提供名字、进程间共享资源、保护资源不被未授权访问等。同时探讨了对象句柄的概念及其使用计数特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 内核对象
内核对象是系统提供的用户模式下代码与内核模式下代码进行交互的基本接口。
一个内核对象是一块内核分配的内存,它只能被运行在内核模式下的代码访问。
内核对象记录的数据在整个系统中只有一份,所以他们也成为系统资源。
使用内核对象是应用程序和系统进行交互的重要方式。
内核对象和普通的数据结构间的最大区别是其内部数据结构是隐藏的,必须调用一个对象服务才能从次对象中得到数据,或者是向其输出数据,而不能直接读或者改变对象内部的数据。这些限制能保证内核对象包含一致的状态。也允许Windows在不打断任何应用程序的情况下来添加、移除或改变这些数据结构中成员的值。
引入内核对象以后,系统可以方便地完成下面四个任务:
1.为系统资源提供可识别的名字
2.在进程间共享资源和数据
3.保护资源不会被未经认可的代码访问
4.跟踪对象的引用情况。
对象句柄
应用程序必须使用API函数来访问内核对象,调用函数创建对象时会返回标识此内核对象的句柄。可以想象此句柄是一个能够被进程中任何线程使用的一个不透明的值,很多API需要以它为参数,以便系统知道要操作哪一个对象。
这些句柄是进程相关的,仅对创建该内核对象的进程有效。如果将一个句柄通过某种机制传给其他进程中的线程,那么该线程以此句柄为参数调用相关的函数时就会失败。
当然,多个进程共享一个内核对象也是可能的,调用DuplicateHandle函数复制一个进程句柄传给其他进程即可。
使用计数
内核对象是进程内的资源,使用计数属性指明进程对特定内核对象的引用次数,当系统发现引用次数是0的时候,它会知道关闭资源。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值