Função ZwOpenDirectoryObject (ntifs.h)

A rotina 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 para 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 do seguinte.

Desiredaccess Sinalizadores 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 DACL (lista de controle de acesso discricionário) do objeto 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 .

Retornar valor

ZwOpenDirectoryObject retorna STATUS_SUCCESS ou um erro apropriado status. 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 NULL , não um ponteiro válido para uma estrutura 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 encontrada.
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 ZwOpenDirectoryObject gerará uma exceção se o parâmetro DirectoryHandle for um ponteiro inválido.

Comentários

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

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

Um objeto de diretório é criado usando a rotina 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.

Nota 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 de uma rotina dos Serviços do 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 dos Serviços de Sistema Nativo.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows XP
Plataforma de Destino Universal
Cabeçalho ntifs.h (inclua Ntdef.h, Ntifs.h, Fltkernel.h)
Biblioteca NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
Regras de conformidade de DDI HwStorPortProhibitedDIs(storport), PowerIrpDDis(wdm)

Confira também

ACCESS_MASK

ACL

InitializeObjectAttributes

Usando versões Nt e Zw das rotinas dos Serviços de Sistema Nativo

ZwClose

ZwCreateDirectoryObject