1.什么是对象,什么是内核对象?
windows操作系统是一个面向对象的操作系统,在系统中充满了对象的概念。窗口、设备环境、代表程序的实例、进程等都是对象。对象就是一个个结构体变量。而我们在使用这些对象的时候,要先得到这个对象的句柄,才能调用相应的API去操作这些对象。而内核对象一般和系统全局性的一些功能有关。
2.使用内核对象一般的模式?
1创建对象或打开对象得到句柄;2用句柄通过API去操作对象;3关闭句柄(句柄全部关完,对象自动销毁)。
3 内核对象引用计数和句柄表?
内核对象被进程引用会使引用计数加1,反之会使引用计数减1,只有当引用计数为0时,对象才会被销毁。
为什么对于同一个对象来讲,在不同的进程中,句柄值是不同的? 因为每一个进程都有自己的句柄表,当某一个进程引用某一个内核对象的时候,会在该进程的句柄表中添加一个表项,存储了该内核对象的内存地址,而该表项在句柄表中的索引就是句柄。所以在不同的进程中,句柄表不同,索引值也就不同。