WINDOWS内核对象

内核对象的基本理解

内核对象,就是由操作系统内核创建、管理的对象,比如信号量、互斥量、文件等,我们在使用这些内核对象时,这能通过句柄去访问。

1. 内核对象的创建:用户通过系统提供的接口创建内核对象,对象置于内核空间中,并返回一个句柄给用户

2. 访问方式:用户不能直接通过内核对象的地址进行访问,而只能通过句柄去访问。

3. 句柄理解:在进程中,有一张内核对象映射表,这张表中记录了内核对象的地址、访问标志以及索引,用户只能通过索引以及系统提供的接口间接的访问内核对象。句柄,可以理解成那个索引。

4. 内核对象的释放:用户只能通过CLOSEHANDLE方式去关闭句柄,该方式下,会清除进程中句柄并关于该内核对象的记录。所以一旦CLOSEHANDLE,该进程就无法访问对应的内核对象。但是该对象是否释放,需要看对应的计数器是否为0. 若计数器不为0,说明还有其他进程在使用该内核对象,暂时不能释放。如果计数器为0,说明该内核对象使用完毕,可以释放。

5. 在进程A,B中访问同一个内核对象,是否可以在B进程中直接用A进程中得句柄?
答案是否定的,句柄是进程中句柄表中对于内核对象的一个索引,在不同的进程中,句柄表的排列方式不一样的,同一个内核对象对于的索引也不一样,所以B进程中不能用A进程中得句柄去访问内核对象。

你可能感兴趣的:(内核对象)