NtOpenDirectoryObject 函数

[此函数将来可能已更改或不可用。]

打开现有目录对象。

语法

NTSTATUS WINAPI NtOpenDirectoryObject(
  _Out_ PHANDLE            DirectoryHandle,
  _In_  ACCESS_MASK        DesiredAccess,
  _In_  POBJECT_ATTRIBUTES ObjectAttributes
);

parameters

DirectoryHandle [out]

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

DesiredAccess [in]

一个ACCESS_MASK,指定对目录对象的请求访问权限。 此参数可使用以下一个或多个值。

含义
DIRECTORY_QUERY
0x0001
查询对目录对象的访问。
DIRECTORY_TRAVERSE
0x0002
对目录对象的名称查找访问。
DIRECTORY_CREATE_OBJECT
0x0004
对目录对象的名称创建访问权限。
DIRECTORY_CREATE_SUBDIRECTORY
0x0008
对目录对象的子目录创建访问权限。
DIRECTORY_ALL_ACCESS
STANDARD_RIGHTS_REQUIRED |0xF
上述所有权利加上 STANDARD_RIGHTS_REQUIRED

 

ObjectAttributes [in]

目录对象的属性。 若要初始化 OBJECT_ATTRIBUTES 结构,请使用 InitializeObjectAttributes 宏。 有关详细信息,请参阅 WDK 文档中这些项的文档。

返回值

函数返回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字符。 这表示对象路径的语法不正确。

 

备注

此函数没有关联的导入库或头文件;必须使用 LoadLibraryGetProcAddress 函数调用它。

要求

要求
DLL
Ntdll.dll

另请参阅

NtQueryDirectoryObject