内核对象

来源:互联网 发布:场矩阵布列松陈 编辑:程序博客网 时间:2024/04/30 01:39

15:23:54 内核对象

内核对象是一个内存块,有操作系统分配,这个内存块是一个数据结构,存放着对象的相关信息。

用于创建内核对象的所有函数几乎都有一个指向一个SECURITY_ATTRIBUTES结构的指针

 

 

进程内核对象句柄表

一个进程初始化时,系统会为他分配一个句柄表,刚开始为空,当第一个线程创建一个内核对象时,内核为这个对象分配并初始化一个内存块。然后扫描进程句柄表,查找一个空白记录项,将指针赋值为内核对象的内存地址。

 

 

索引

指向内核对象的指针

访问掩码

标志

1

 

 

 

2

 

 

 

 

从上可以看出,可以通过索引来获得内核对象的指针。要得到索引值,应该用句柄值除以4。由于句柄值实际是作为进程句柄表的索引来使用的,所以其他进程无法使用。

 

关闭内核对象

closeHandle(HANDLE Hobject)

 

跨进程共享内核对象:

 

1、对象句柄继承

只有句柄可以继承,对象本身是不能继承的。只有进程之间是父子关系才可以实现句柄继承。

设置方式如下:

 

此时系统会遍历父进程的句柄表,将可以继承的句柄复制到子进程的句柄表中。系统会递增内核对象的使用计数。为了销毁对象,父子进程都必须调用closeHandle来关闭内核对象。

 

2、复制对象句柄

DumplicateHandle();

http://baike.baidu.com/view/1285868.htm

 

 

END

2010-09-02 15:24:01

 

 

 

 

 

原创粉丝点击