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 |
---|---|
|
Não foi possível alocar um buffer temporário exigido por essa rotina. |
|
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. |
|
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. |
|
O parâmetro ObjectAttributes continha um campo ObjectName na estrutura OBJECT_ATTRIBUTES que não pôde ser encontrada. |
|
O parâmetro ObjectAttributes continha um campo ObjectName na estrutura OBJECT_ATTRIBUTES com um caminho de objeto que não pôde ser encontrado. |
|
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.
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
Usando versões Nt e Zw das rotinas dos Serviços de Sistema Nativo