Compartilhar via


Função ZwOpenDirectoryObject (ntifs.h)

A rotina de ZwOpenDirectoryObject abre um objeto de diretório existente.

Sintaxe

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

Parâmetros

[out] DirectoryHandle

Manipule o objeto de diretório recém-aberto.

[in] DesiredAccess

Uma estrutura ACCESS_MASK especificando os tipos de acesso solicitados que estão sendo solicitados para esse objeto de diretório. Um chamador pode especificar uma ou uma combinação da seguinte.

Sinalizadores de DesiredAccess do Significado
DIRECTORY_QUERY Consultar o acesso ao objeto de diretório
DIRECTORY_TRAVERSE Acesso de pesquisa de nome ao objeto de diretório
DIRECTORY_CREATE_OBJECT Acesso de criação de nome ao objeto de diretório
DIRECTORY_CREATE_SUBDIRECTORY Acesso de criação de subdiretório ao objeto de diretório
DIRECTORY_ALL_ACCESS Todos os direitos anteriores mais STANDARD_RIGHTS_REQUIRED.
 

Esses tipos de acesso solicitados são comparados com a lista de controle de acesso discricionário do objeto (DACL) para determinar quais acessos são concedidos ou negados.

[in] ObjectAttributes

Atributos especificados para o objeto de diretório fornecido pelo chamador. Esse parâmetro é inicializado chamando a macro InitializeObjectAttributes.

Valor de retorno

ZwOpenDirectoryObject retorna STATUS_SUCCESS ou um status de erro apropriado. Os códigos de status de erro mais comuns incluem o seguinte:

Código de retorno Descrição
STATUS_INSUFFICIENT_RESOURCES
Não foi possível alocar um buffer temporário exigido por essa rotina.
STATUS_INVALID_PARAMETER
O parâmetro ObjectAttributes especificado era um ponteiro de NULL , não um ponteiro válido para uma estrutura de OBJECT_ATTRIBUTES ou alguns dos campos especificados na estrutura OBJECT_ATTRIBUTES eram inválidos.
STATUS_OBJECT_NAME_INVALID
O parâmetro ObjectAttributes continha um campo ObjectName na estrutura OBJECT_ATTRIBUTES inválido porque uma cadeia de caracteres vazia foi encontrada após o caractere OBJECT_NAME_PATH_SEPARATOR.
STATUS_OBJECT_NAME_NOT_FOUND
O parâmetro ObjectAttributes continha um campo ObjectName na estrutura OBJECT_ATTRIBUTES que não pôde ser encontrado.
STATUS_OBJECT_PATH_NOT_FOUND
O parâmetro ObjectAttributes continha um campo ObjectName na estrutura OBJECT_ATTRIBUTES com um caminho de objeto que não pôde ser encontrado.
STATUS_OBJECT_PATH_SYNTAX_BAD
O parâmetro ObjectAttributes não continha um campo RootDirectory, mas o campo ObjectName na estrutura OBJECT_ATTRIBUTES era uma cadeia de caracteres vazia ou não continha um caractere OBJECT_NAME_PATH_SEPARATOR. Isso indica a sintaxe incorreta para o caminho do objeto.
 

A rotina de ZwOpenDirectoryObject gera uma exceção se o parâmetro directoryHandle for um ponteiro ilegal.

Observações

ZwOpenDirectoryObject abre um objeto de diretório existente e retorna um identificador para o objeto.

A rotina de ZwOpenDirectoryObject é chamada depois que a macro InitializeObjectAttributes é usada para inicializar atributos específicos da estrutura de OBJECT_ATTRIBUTES para que o objeto seja aberto.

Um objeto de diretório é criado usando a rotina de ZwCreateDirectoryObject. Qualquer identificador obtido chamando ZwOpenDirectoryObject deve eventualmente ser liberado chamando ZwClose.

Para obter mais informações sobre segurança e controle de acesso, consulte modelo de segurança do Windows para desenvolvedores de driver e a documentação sobre esses tópicos no SDK do Windows.

Observação Se a chamada para a função ZwCreateDirectoryObject ocorrer no modo de usuário, você deverá usar o nome "NtCreateDirectoryObject" em vez de "ZwCreateDirectoryObject".
 
Para chamadas de drivers no modo kernel, as versões NtXxx e Zwxxx versões de uma rotina dos Serviços de Sistema Nativo do Windows podem se comportar de forma diferente na maneira como lidam e interpretam parâmetros de entrada. Para obter mais informações sobre a relação entre as versões NtXxx e ZwXxx de uma rotina, consulte Usando versões Nt e Zw das rotinas de serviços do sistema nativo.

Requisitos

Requisito Valor
de cliente com suporte mínimo Windows XP
da Plataforma de Destino Universal
cabeçalho ntifs.h (incluem Ntdef.h, Ntifs.h, Fltkernel.h)
biblioteca NtosKrnl.lib
de DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
regras de conformidade de DDI HwStorPortProhibitedDIs(storport), PowerIrpDDis(wdm)

Consulte também

ACCESS_MASK

acl

InitializeObjectAttributes

usando versões Nt e Zw das rotinas de serviços do sistema nativo

ZwClose

ZwCreateDirectoryObject