Função NtSetSecurityObject (ntifs.h)

A rotina NtSetSecurityObject define o estado de segurança de um objeto.

Sintaxe

__kernel_entry NTSYSCALLAPI NTSTATUS NtSetSecurityObject(
  [in] HANDLE               Handle,
  [in] SECURITY_INFORMATION SecurityInformation,
  [in] PSECURITY_DESCRIPTOR SecurityDescriptor
);

Parâmetros

[in] Handle

Identificador para o objeto cujo estado de segurança deve ser definido. Esse identificador deve ter o acesso especificado na coluna Meaning da tabela mostrada na descrição do parâmetro SecurityInformation .

[in] SecurityInformation

SECURITY_INFORMATION valor que especifica as informações a serem definidas como uma combinação de uma ou mais das opções a seguir.

Valor Significado
OWNER_SECURITY_INFORMATION Indica que o identificador do proprietário do objeto deve ser definido. Requer acesso WRITE_OWNER.
GROUP_SECURITY_INFORMATION Indica que o identificador de grupo primário do objeto deve ser definido. Requer acesso WRITE_OWNER.
SACL_SECURITY_INFORMATION Indica que a ACL do sistema (SACL) do objeto deve ser definida. Requer acesso ACCESS_SYSTEM_SECURITY.
DACL_SECURITY_INFORMATION Indica que a DACL (lista de controle de acesso discricionário) do objeto deve ser definida. Requer acesso WRITE_DAC.

[in] SecurityDescriptor

Ponteiro para o descritor de segurança a ser definido para o objeto .

Retornar valor

NtSetSecurityObject 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 chamador não tinha o acesso necessário.
STATUS_ACCESS_VIOLATION SecurityDescriptor era um ponteiro NULL .
STATUS_INSUFFICIENT_RESOURCES Não foi possível capturar o descritor de segurança do objeto.
STATUS_INVALID_ACL O descritor de segurança do objeto continha uma ACL inválida.
STATUS_INVALID_HANDLE O identificador não é um identificador válido.
STATUS_INVALID_SECURITY_DESCR SecurityDescriptor não apontou para um descritor de segurança válido.
STATUS_INVALID_SID O descritor de segurança do objeto continha um SID inválido.
STATUS_OBJECT_TYPE_MISMATCH Handle não é um identificador do tipo esperado.
STATUS_UNKNOWN_REVISION O nível de revisão do descritor de segurança do objeto era desconhecido ou não tinha suporte.

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.

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 usar FltSetSecurityObject em vez de NtSetSecurityObject.

Os chamadores de NtSetSecurityObject devem estar em execução em IRQL = PASSIVE_LEVEL e com APCs de kernel especiais habilitadas.

Observação

Se a chamada para a função NtSetSecurityObject ocorrer no modo de usuário, você deverá usar o nome "NtSetSecurityObject" em vez de "ZwSetSecurityObject".

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 (consulte a seção Comentários)
Regras de conformidade da DDI HwStorPortProhibitedDDIs, PowerIrpDDis

Confira também

FltSetSecurityObject

SECURITY_DESCRIPTOR

SECURITY_INFORMATION

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

NtQuerySecurityObject

ZwSetSecurityObject