解读OBJ_KERNEL_HANDLE

来源:互联网 发布:淘宝联盟领取优惠券 编辑:程序博客网 时间:2024/05/22 19:02

我们在创建文件对象时,会使用宏InitializeObjectAttributes初始化OBJECT_ATTRIBUTES结构体,InitializeObjectAttributes声明如下:

VOID   InitializeObjectAttributes(    OUT POBJECT_ATTRIBUTES  InitializedAttributes,    IN PUNICODE_STRING  ObjectName,    IN ULONG  Attributes,    IN HANDLE  RootDirectory,    IN PSECURITY_DESCRIPTOR  SecurityDescriptor    );


 

其中属性Attributes可以设置OBJ_KERNEL_HANDLE,这个常量值代表什么意思呢?

若属性中不包括这个掩码,则创建的句柄属于当前上下文所属进程的句柄表中,若包括此掩码,创建的句柄属于系统上下文句柄表中(也可以叫全局句柄表吧),且不可被用户模式程序访问。假设对象属性不包含OBJ_KERNEL_HANDLE,进程A访问属于进程B的句柄,估计蓝屏(没测过),至少不会有正确的结果,所以一般情况下的设置为OBJ_CASE_INSENSITIVE|OBJ_KERNEL_HANDLE。

 

 

0 0
原创粉丝点击