Función ZwOpenDirectoryObject (ntifs.h)

La rutina ZwOpenDirectoryObject abre un objeto de directorio existente.

Sintaxis

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

Parámetros

[out] DirectoryHandle

Identificador del objeto de directorio recién abierto.

[in] DesiredAccess

Estructura ACCESS_MASK que especifica los tipos de acceso solicitados que se solicitan para este objeto de directorio. Un llamador puede especificar una o una combinación de lo siguiente.

DesiredAccess Banderas Significado
DIRECTORY_QUERY Consulta del acceso al objeto de directorio
DIRECTORY_TRAVERSE Acceso de búsqueda de nombres al objeto de directorio
DIRECTORY_CREATE_OBJECT Acceso de creación de nombres al objeto de directorio
DIRECTORY_CREATE_SUBDIRECTORY Acceso de creación de subdirectorios al objeto de directorio
DIRECTORY_ALL_ACCESS Todos los derechos anteriores más STANDARD_RIGHTS_REQUIRED.
 

Estos tipos de acceso solicitados se comparan con la lista de control de acceso discrecional (DACL) del objeto para determinar qué accesos se conceden o deniegan.

[in] ObjectAttributes

Atributos especificados para el objeto de directorio proporcionado por el autor de la llamada. Este parámetro se inicializa mediante una llamada a la macro InitializeObjectAttributes .

Valor devuelto

ZwOpenDirectoryObject devuelve STATUS_SUCCESS o un estado de error adecuado. Los códigos de estado de error más comunes son los siguientes:

Código devuelto Descripción
STATUS_INSUFFICIENT_RESOURCES
No se pudo asignar un búfer temporal requerido por esta rutina.
STATUS_INVALID_PARAMETER
El parámetro ObjectAttributes especificado era un puntero NULL , no un puntero válido a una estructura de OBJECT_ATTRIBUTES o algunos de los campos especificados en la estructura OBJECT_ATTRIBUTES no eran válidos.
STATUS_OBJECT_NAME_INVALID
El parámetro ObjectAttributes contenía un campo ObjectName en la estructura OBJECT_ATTRIBUTES que no era válida porque se encontró una cadena vacía después del carácter OBJECT_NAME_PATH_SEPARATOR.
STATUS_OBJECT_NAME_NOT_FOUND
El parámetro ObjectAttributes contenía un campo ObjectName en la estructura OBJECT_ATTRIBUTES que no se encontró.
STATUS_OBJECT_PATH_NOT_FOUND
El parámetro ObjectAttributes contenía un campo ObjectName en la estructura OBJECT_ATTRIBUTES con una ruta de acceso de objeto que no se encontró.
STATUS_OBJECT_PATH_SYNTAX_BAD
El parámetro ObjectAttributes no contenía un campo RootDirectory , pero el campo ObjectName de la estructura OBJECT_ATTRIBUTES era una cadena vacía o no contenía un carácter de OBJECT_NAME_PATH_SEPARATOR. Esto indica una sintaxis incorrecta para la ruta de acceso del objeto.
 

La rutina ZwOpenDirectoryObject produce una excepción si el parámetro DirectoryHandle es un puntero no válido.

Comentarios

ZwOpenDirectoryObject abre un objeto de directorio existente y devuelve un identificador al objeto .

Se llama a la rutina ZwOpenDirectoryObject después de que se use la macro InitializeObjectAttributes para inicializar atributos específicos de la estructura OBJECT_ATTRIBUTES para que se abra el objeto.

Se crea un objeto de directorio mediante la rutina ZwCreateDirectoryObject. Cualquier identificador obtenido llamando a ZwOpenDirectoryObject finalmente debe liberarse llamando a ZwClose.

Para obtener más información sobre la seguridad y el control de acceso, consulte Modelo de seguridad de Windows para desarrolladores de controladores y la documentación sobre estos temas en Windows SDK.

Nota Si la llamada a la función ZwCreateDirectoryObject se produce en modo de usuario, debe usar el nombre "NtCreateDirectoryObject" en lugar de "ZwCreateDirectoryObject".
 
En el caso de las llamadas desde controladores en modo kernel, las versiones NtXxx y ZwXxx de una rutina de Windows Native System Services pueden comportarse de forma diferente en la forma en que controlan e interpretan los parámetros de entrada. Para obtener más información sobre la relación entre las versiones NtXxx y ZwXxx de una rutina, vea Using Nt and Zw Versions of the Native System Services Routines.

Requisitos

Requisito Value
Cliente mínimo compatible Windows XP
Plataforma de destino Universal
Encabezado ntifs.h (include Ntdef.h, Ntifs.h, Fltkernel.h)
Library NtosKrnl.lib
Archivo DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
Reglas de cumplimiento de DDI HwStorPortProhibitedDIs(storport), PowerIrpDDis(wdm)

Consulte también

ACCESS_MASK

ACL

InitializeObjectAttributes

Uso de las versiones Nt y Zw de las rutinas nativas de System Services

ZwClose

ZwCreateDirectoryObject