Função ZwQuerySecurityObject (ntifs.h)
A rotina ZwQuerySecurityObject recupera uma cópia do descritor de segurança de um objeto.
Sintaxe
NTSYSAPI NTSTATUS ZwQuerySecurityObject(
[in] HANDLE Handle,
[in] SECURITY_INFORMATION SecurityInformation,
[out] PSECURITY_DESCRIPTOR SecurityDescriptor,
[in] ULONG Length,
[out] PULONG LengthNeeded
);
Parâmetros
[in] Handle
Identificador do objeto cujo descritor de segurança deve ser consultado. Esse identificador deve ter o acesso especificado na coluna Meaning da tabela mostrada na descrição do parâmetro SecurityInformation .
[in] SecurityInformation
Um valor SECURITY_INFORMATION especificando as informações a serem consultadas como uma combinação de uma ou mais das seguintes informações.
Valor | Significado |
---|---|
OWNER_SECURITY_INFORMATION | O identificador do proprietário do objeto está sendo consultado. Requer acesso READ_CONTROL. |
GROUP_SECURITY_INFORMATION | O identificador de grupo primário do objeto está sendo consultado. Requer acesso READ_CONTROL. |
SACL_SECURITY_INFORMATION | A ACL do sistema (SACL) do objeto está sendo consultada. Requer acesso ACCESS_SYSTEM_SECURITY. |
DACL_SECURITY_INFORMATION | A DACL (lista de controle de acesso discricionário) do objeto está sendo consultada. Requer acesso READ_CONTROL. |
[out] SecurityDescriptor
Buffer alocado pelo chamador que ZwQuerySecurityObject preenche com uma cópia do descritor de segurança especificado. A estrutura SECURITY_DESCRIPTOR é retornada no formato auto-relativo.
[in] Length
Tamanho, em bytes, do buffer apontado por SecurityDescriptor.
[out] LengthNeeded
Ponteiro para uma variável alocada pelo chamador que recebe o número de bytes necessários para armazenar o descritor de segurança copiado.
Retornar valor
ZwQuerySecurityObject retorna STATUS_SUCCESS ou um erro apropriado status. Possíveis códigos de status de erro incluem o seguinte:
Código de retorno | Descrição |
---|---|
STATUS_ACCESS_DENIED | O identificador não tinha o acesso necessário. |
STATUS_BUFFER_TOO_SMALL | O buffer é muito pequeno para o descritor de segurança. Nenhuma das informações de segurança foi copiada para o buffer. |
STATUS_INVALID_HANDLE | O identificador não era um identificador válido. |
STATUS_OBJECT_TYPE_MISMATCH | O identificador não era um identificador do tipo esperado. |
Comentários
Um descritor de segurança pode estar em forma absoluta ou auto-relativa. Na forma auto-relativa, todos os membros da estrutura estão localizados contíguamente na memória. Na forma absoluta, a estrutura contém apenas ponteiros para os membros. Para obter mais informações, confira Descritores de segurança absolutos e autorrelativos.
O sistema de arquivos NTFS impõe um limite de 64K no tamanho do descritor de segurança que é gravado em disco para um arquivo. (O sistema de arquivos FAT não dá suporte a descritores de segurança para arquivos.) Portanto, é garantido que um buffer SecurityDescriptor de 64K seja grande o suficiente para manter a estrutura de SECURITY_DESCRIPTOR retornada.
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.
Os minifiltros devem chamar FltQuerySecurityObject em vez de ZwQuerySecurityObject.
Observação
Se a chamada para a função ZwQuerySecurityObject ocorrer no modo de usuário, você deverá usar o nome "NtQuerySecurityObject" em vez de "ZwQuerySecurityObject".
Para chamadas de drivers de modo kernel, as versões NtXxx e ZwXxx de uma rotina do Windows Native System Services 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 Using Nt and Zw Versions of the Native System Services Routines.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows XP |
Plataforma de Destino | Universal |
Cabeçalho | ntifs.h (inclua Ntifs.h) |
Biblioteca | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
Regras de conformidade da DDI | HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm) |