内核对象(1)

  内核对象的数据结构只能有操作系统内核访问,应用程序只能通过一些函数进

 

  行访问和操作。

 

  创建内核对象:在32为windows进程中句柄是一个32位值,在64位进程中

 

  则是64位值。

 

  句柄值是与进程相关的,如果将句柄值传给另一个进程的线程将有可能失败

 

  不过或许程序会根据我们传的句柄引用一个完全不同的内核对象。

 

 

   使用计数:

 

    初次创建内核对象时,内核对象计数为1,如果另一个进程使用该对象时计数

 

将递增,同时也会随着使用进程的终止而递减,直到所有的引用停止,计数变为

 

0内核对象才会销毁。

 

  内核对象安全性:

 

    不同于用户对象GDI。。。内核对象的创建基本都会伴随着安全参数,

 

SECURITY_ATTRIBUTES结构体包含了对象的继承性和安全性有关成员。不过

 

如果我们不关心其安全性,也可以传入NULL。

 

不关心对象的安全性。

 

   进程内核对象句柄表:

 

   一个进程初始化时就被系统分配了一个句柄表,这是一个结构体数组其中每个

 

结构体都包含了指向一个内核对象的指针,一个访问掩码,和一些标志。

 

当我们创建内核对象时,指针成员将被设置成内核对象的数据结构的内部内存地

 

址,访问掩码将被设置成拥有完全访问权限。而其标志信息将取决于句柄是否可

 

以被继承,也就是通过设置安全属性的继承信息。

 

在我们将安全信息SECURITY_ATTRIBUTES传入空时将导致返回句柄不可继

承,其句柄标志也将为0,当我们将这个结构体变量传入并且在bInheritHandle

设定为true时标志将为1;此外还可以通过其他api来设定标志。

索引:

句柄是通过索引来存储在系统的一个进程句柄表中的,这个索引值就是句柄的实

际值除以4,因为最后两位是供操作系统内部使用。

无效句柄:

 往往我们会根据返回值来获取错误信息。但是并不是每次返回失败时都会返回空

或者返回INVALID_HANDLE_VALUE,这要看创建内核对象的函数!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值