ZwOpenDirectoryObject 函数 (ntifs.h)

ZwOpenDirectoryObject 例程将打开现有的目录对象。

语法

NTSYSAPI NTSTATUS ZwOpenDirectoryObject(
  [out] PHANDLE            DirectoryHandle,
  [in]  ACCESS_MASK        DesiredAccess,
  [in]  POBJECT_ATTRIBUTES ObjectAttributes
);

参数

[out] DirectoryHandle

新打开的目录对象的句柄。

[in] DesiredAccess

一个ACCESS_MASK结构,用于指定要为此目录对象请求的访问请求类型。 调用方可以指定以下项之一或组合。

DesiredAccess 标志 含义
DIRECTORY_QUERY 查询对目录对象的访问
DIRECTORY_TRAVERSE 对目录对象的名称查找访问
DIRECTORY_CREATE_OBJECT 对目录对象的名称创建访问权限
DIRECTORY_CREATE_SUBDIRECTORY 对目录对象的子目录创建访问权限
DIRECTORY_ALL_ACCESS 上述所有权利加上STANDARD_RIGHTS_REQUIRED。
 

这些请求的访问类型与对象的自由访问控制列表 (DACL) 进行比较,以确定授予或拒绝了哪些访问。

[in] ObjectAttributes

为调用方提供的目录对象指定属性。 此参数通过调用 InitializeObjectAttributes 宏进行初始化。

返回值

ZwOpenDirectoryObject 返回STATUS_SUCCESS或适当的错误状态。 最常见的错误状态代码包括:

返回代码 说明
STATUS_INSUFFICIENT_RESOURCES
无法分配此例程所需的临时缓冲区。
STATUS_INVALID_PARAMETER
指定的 ObjectAttributes 参数是 NULL 指针,不是指向 OBJECT_ATTRIBUTES 结构的有效指针,或者OBJECT_ATTRIBUTES结构中指定的某些字段无效。
STATUS_OBJECT_NAME_INVALID
ObjectAttributes 参数在 OBJECT_ATTRIBUTES 结构中包含一个 ObjectName 字段,该字段无效,因为在OBJECT_NAME_PATH_SEPARATOR字符之后找到空字符串。
STATUS_OBJECT_NAME_NOT_FOUND
ObjectAttributes 参数在OBJECT_ATTRIBUTES结构中包含一个找不到的 ObjectName 字段。
STATUS_OBJECT_PATH_NOT_FOUND
ObjectAttributes 参数在 OBJECT_ATTRIBUTES 结构中包含一个 ObjectName 字段,其中的对象路径是找不到的。
STATUS_OBJECT_PATH_SYNTAX_BAD
ObjectAttributes 参数不包含 RootDirectory 字段,但 OBJECT_ATTRIBUTES 结构中的 ObjectName 字段为空字符串或不包含OBJECT_NAME_PATH_SEPARATOR字符。 这表示对象路径的语法不正确。
 

如果 DirectoryHandle 参数是非法指针,则 ZwOpenDirectoryObject 例程将引发异常。

注解

ZwOpenDirectoryObject 打开一个现有目录对象,并返回该对象的句柄。

InitializeObjectAttributes 宏用于初始化要打开对象的 OBJECT_ATTRIBUTES 结构的特定属性之后调用 ZwOpenDirectoryObject 例程。

目录对象是使用 ZwCreateDirectoryObject 例程创建的通过调用 ZwOpenDirectoryObject 获取的任何句柄最终都必须通过调用 ZwClose 释放。

有关安全性和访问控制的详细信息,请参阅 面向驱动程序开发人员的 Windows 安全模型 和 Windows SDK 中有关这些主题的文档。

注意 如果对 ZwCreateDirectoryObject 函数的调用在用户模式下发生,则应使用名称“NtCreateDirectoryObject”而不是“ZwCreateDirectoryObject”。
 
对于来自内核模式驱动程序的调用,Windows Native System Services 例程的 NtXxxZwXxx 版本在处理和解释输入参数的方式上的行为可能有所不同。 有关例程的 NtXxxZwXxx 版本之间的关系的详细信息,请参阅 使用本机系统服务例程的 Nt 和 Zw 版本

要求

要求
最低受支持的客户端 Windows XP
目标平台 通用
标头 ntifs.h (包括 Ntdef.h、Ntifs.h、Fltkernel.h)
Library NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
DDI 符合性规则 HwStorPortProhibitedDDI (storport) PowerIrpDDis (wdm)

另请参阅

ACCESS_MASK

ACL

InitializeObjectAttributes

使用本机系统服务例程的 Nt 和 Zw 版本

ZwClose

ZwCreateDirectoryObject