进程、线程及内核对象笔记
内核对象
每个内核对象只是内核分配的一个内存块,并且只能由该内核访问,这个内存块是一种数据结构,他的成员负责维护该对象的各种信息,如进程对象有一个进程ID、一个基本优先级和一个退出代码。
由于内核对象的数据结构只能被内核访问,so应用程序是无法在内存中找到这些数据结构的并直接改变其内容的。Windows提出这个限制为了确保内核对象结构保持状态的一致,也是为了保证Microsoft能够在不破坏应用程序的情况下在这些内核对象的结构中添加、删除、修改这些数据成员;
内核对象使用引用计数
内核对象由内核所有,而不是进程所有,举例说明,在做单进程限制时,我们一般会CreateMutex来创建一个命名的Mutex,再另外一个进程中再来创建或者打开相同命名的Mutex来检验有相同进程被创建。也可以这么说进程调用一个创建的内核对象函数,进程终止了但是内核对象不一定被撤销;
进程内核对象的句柄表
当一个进程被初始化时,系统会为其分配一个句柄表,该句柄表只用于内核对象不用于用户和GUI对象。当今进程初始化时,句柄表是空的,然后当其中的线程创建内核对象时,内核就为其对象分配一个内存块,并对