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或适当的错误状态。 最常见的错误状态代码包括:
返回代码 | 描述 |
---|---|
|
无法分配此例程所需的临时缓冲区。 |
|
指定的 ObjectAttributes 参数是 NULL 指针,不是指向 OBJECT_ATTRIBUTES 结构的有效指针,或者OBJECT_ATTRIBUTES结构中指定的某些字段无效。 |
|
ObjectAttributes 参数包含 ObjectName 字段中 OBJECT_ATTRIBUTES 结构中无效的字段,因为OBJECT_NAME_PATH_SEPARATOR字符后发现了空字符串。 |
|
ObjectAttributes 参数包含找不到 OBJECT_ATTRIBUTES 结构中的 ObjectName 字段。 |
|
ObjectAttributes 参数包含 OBJECT_ATTRIBUTES 结构中 ObjectName 字段,其中包含找不到的对象路径。 |
|
ObjectAttributes 参数不包含 RootDirectory 字段,但 OBJECT_ATTRIBUTES 结构中的 ObjectName 字段是空字符串或不包含OBJECT_NAME_PATH_SEPARATOR字符。 这表示对象路径的语法不正确。 |
如果 DirectoryHandle 参数是非法指针,则 ZwOpenDirectoryObject 例程将引发异常。
言论
ZwOpenDirectoryObject 打开现有目录对象,并返回对象的句柄。
ZwOpenDirectoryObject 例程在 InitializeObjectAttributes 宏后调用,以初始化要打开对象的 OBJECT_ATTRIBUTES 结构的特定属性。
使用 ZwCreateDirectoryObject 例程创建目录对象。调用 ZwOpenDirectoryObject 获取的任何句柄最终都必须通过调用 ZwClose释放。
有关安全和访问控制的详细信息,请参阅适用于驱动程序开发人员
要求
要求 | 价值 |
---|---|
最低支持的客户端 | Windows XP |
目标平台 | 普遍 |
标头 | ntifs.h (包括 Ntdef.h、Ntifs.h、Fltkernel.h) |
库 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
DDI 符合性规则 | HwStorPortProhibitedDIS(storport),PowerIrpDDis(wdm) |