InitializeObjectAttributes 【MSDN翻译】

InitializeObjectAttributes


InitializeObjectAttributes 宏初始化一个OBJECT_ATTRIBUTES 结构体, 当一个例程打开对象时由此结构体指定目标对象的属性。

语法


C++ 

 

VOID InitializeObjectAttributes(

  [out]          POBJECT_ATTRIBUTES   InitializedAttributes,

  [in]           PUNICODE_STRING      ObjectName,

  [in]           ULONG                Attributes,

  [in]           HANDLE               RootDirectory,

  [in, optional] PSECURITY_DESCRIPTOR SecurityDescriptor

);


参数

InitializedAttributes [out] 

输出需要初始化的 OBJECT_ATTRIBUTES 结构体。

ObjectName [in] 

Unicode string 指针,指定需要打开对象的名字。此参数可以是一个对象的全路径,也可以是一个RootDirectory参数的相对路径。

Attributes [in] 

可以是一个或者多个一下的标志:

OBJ_INHERIT 

此句柄可以被当前进程的子进程继承。

OBJ_PERMANENT 

此标志仅对在对象管理器中的命名对象有效。

一般说来对象在所有打开它的句柄都被关闭时被删除。但是如果指定这个标志则即使所有打开对象的句柄都被关闭对象也不会被删除。驱动可以使用ZwMakeTemporaryObject 去删除这个“持久的对象”.

OBJ_EXCLUSIVE 

指定独占式打开,此对象仅能被一个句柄打开。

OBJ_CASE_INSENSITIVE 

如果被指定则系统在与已经存在的对象做ObjectName 的比较匹配时不分大小写,否则使用系统默认的设定。

OBJ_OPENIF 

当指定此标志时,如果一个例程在创建对象时目标对象已经存在则打开对象。

如果未指定此标志,则创建例程返回NTSTATUS code:STATUS_OBJECT_NAME_COLLISION.

 

OBJ_KERNEL_HANDLE 

此句柄仅能用于内核模式下。

OBJ_FORCE_ACCESS_CHECK 

强制打开此对象的例程必须执行所有的访问检查,即使此句柄已经在内核模式下打开。

RootDirectory [in] 

与ObjectName参数匹配的根目录对象,如果ObjectName是对象的全路径则设置此参数为NULL,使用ZwCreateDirectoryObject 获取一个目录对象。

SecurityDescriptor [in, optional] 

指定对象创建时应用于此对象的安全描述符。此参数为可选参数。驱动程序可以使用NULL用于创建一个具有默认安全描述符的对象。更多信息见Remarks节。

Return value

None

Remarks

InitializeObjectAttributes 初始化一个 OBJECT_ATTRIBUTES 结构用于指定一个需要打开的对象的属性。用于调用者在实际打开此句柄的例程中传入此结构体的指针。

除了在系统进程上下文运行中的驱动例程外执行此函数时都必须在参数Attributes 中指定OBJ_KERNEL_HANDLE 属性。此参数限定了句柄仅能被在内核模式下运行的进程打开。 

注意 InitializeObjectAttributes 总是设置 OBJECT_ATTRIBUTES 的SecurityQualityOfService 成员为 NULL. 如驱动需要这个成员可以直接设置(无需用函数)。


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值