《Windows核心编程 5th》读书笔记------第3章 内核对象
2013-03-13 00:01
267 查看
何为内核对象?
每个内核对象都只是一个内存块,它由操作系统内核分配,并只能由操作系统内核访问。这个内存块是一个数据结构,其成员维护着与对象相关的信息。由于内核对象的数据结构只能由操作系统内核访问,所以应用程序不能在内在中定位这些数据结构并直接更改其内容。应用程序想要操纵这些内核对象,可以利用Windows提供的一组函数。
调用一个会创建内核对象的函数后,函数会返回一个句柄(handle),它标识了所创建的对象。可以将这个句柄对象想象为一个不透明的值,它可由进程的任何线程使用。在 32位Windows进程中,句柄是一个32位值;在64位Windows进程中,则是一个64值,我们可以将这个句柄传给各种Windows函数,从而对它进行操作。
使用计数
内核对象的所有者是操作内核,而非进程。换言之,如果我们的进程调用一个函数来创建一个内核对象,然后进程终止运行,则内核对象并不一定会销毁。大多数情况下,这个内核对象是会销毁的,但假如另一个进程正在使用我们的进程创建的内核对象,那么在其他进程停止使用它之前,它是不会销毁的。总之,内核对象的生命期可能长于创建的那个进程。
操作系统内核知道当前有多少个进程正在使用一个特定的内核对象,因为每个对象都包含一个使用计数。初次创建一个对象的时候,其使用计数被设为1。另一个进程获得对现有内核对象的访问后,使用计数会递增。进程终止运行后,操作系统内核将自动递减此进程仍然打开的所有内核对象的使用计数。如果一旦对象的使用计数变成0,操作系统内核就会销毁该对象。
进程内核对象句柄表
一个进程在初始化时,系统将为它分配一个句柄表。这个句柄表仅供内核对象使用,不适用于用户对象或GDI对象。
跨进程边界共享内核对象:
可以利用三种不同的机制来允许进程共享内核对象:使用对象继承,为对象命名,复制对象句柄。
关于对象继承,此前已经写过一篇读书笔记:http://blog.csdn.net/gzzheyi/article/details/7777202
每个内核对象都只是一个内存块,它由操作系统内核分配,并只能由操作系统内核访问。这个内存块是一个数据结构,其成员维护着与对象相关的信息。由于内核对象的数据结构只能由操作系统内核访问,所以应用程序不能在内在中定位这些数据结构并直接更改其内容。应用程序想要操纵这些内核对象,可以利用Windows提供的一组函数。
调用一个会创建内核对象的函数后,函数会返回一个句柄(handle),它标识了所创建的对象。可以将这个句柄对象想象为一个不透明的值,它可由进程的任何线程使用。在 32位Windows进程中,句柄是一个32位值;在64位Windows进程中,则是一个64值,我们可以将这个句柄传给各种Windows函数,从而对它进行操作。
使用计数
内核对象的所有者是操作内核,而非进程。换言之,如果我们的进程调用一个函数来创建一个内核对象,然后进程终止运行,则内核对象并不一定会销毁。大多数情况下,这个内核对象是会销毁的,但假如另一个进程正在使用我们的进程创建的内核对象,那么在其他进程停止使用它之前,它是不会销毁的。总之,内核对象的生命期可能长于创建的那个进程。
操作系统内核知道当前有多少个进程正在使用一个特定的内核对象,因为每个对象都包含一个使用计数。初次创建一个对象的时候,其使用计数被设为1。另一个进程获得对现有内核对象的访问后,使用计数会递增。进程终止运行后,操作系统内核将自动递减此进程仍然打开的所有内核对象的使用计数。如果一旦对象的使用计数变成0,操作系统内核就会销毁该对象。
进程内核对象句柄表
一个进程在初始化时,系统将为它分配一个句柄表。这个句柄表仅供内核对象使用,不适用于用户对象或GDI对象。
跨进程边界共享内核对象:
可以利用三种不同的机制来允许进程共享内核对象:使用对象继承,为对象命名,复制对象句柄。
关于对象继承,此前已经写过一篇读书笔记:http://blog.csdn.net/gzzheyi/article/details/7777202
相关文章推荐
- 《Windows核心编程 5th》读书笔记----第9章 用内核对象进行线程同步
- 读书笔记——Windows核心编程(8)Interlocked系列函数
- 《Windows核心编程》读书笔记四 进程
- 读书笔记:C++ primer 5th edition--chapter 6.函数
- 读书笔记:C++ primer 5th edition--chapter18.用于大型程序的工具
- 《加密与解密(第三版)》读书笔记第3章(静态分析 IDA pro)
- 《Essential Guide》读书笔记【1】【第3章】
- 《ERP从内部集成起步》读书笔记——第3章 用信息集成的观念理解MRP到ERP II 3.1MPR II—制造资源计划
- WINDOWS的内核对象——《windows核心编程》读书笔记
- 读书笔记:Windows核心编程第八章---用户方式中的线程同步技巧
- 《windows核心编程》读书笔记 --Windows应用程序启动方式
- 《Linux内核设计与实现》第3章读书笔记
- WINDOWS核心编程之什么是内核对象(二)
- 读书笔记——Windows核心编程(8)Interlocked单向链式栈
- 读书笔记——Windows核心编程(15)在应用程序中使用虚拟内存
- 《Windows核心编程(第5版•英文版)》暨《深入理解.NET(第2版•英文版)》有奖书评/读书笔记征集活动
- 《Effective C++》第3章 资源管理(2)-读书笔记
- 读书笔记——Windows核心编程(8)Interlocked系列函数
- 读书笔记---《集体智慧编程》第3章:发现群组
- 读书笔记:C++ primer 5th edition--chapter7.类