Compartilhar via


Função NtSetSecurityObject (ntifs.h)

A rotina de 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

Manipule 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 seguintes informações.

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.

Valor de retorno

NtSetSecurityObject retorna STATUS_SUCCESS ou um status de erro apropriado. Os códigos de status de erro possíveis 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 de 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 Handle 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.

Observações

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, consulte Descriptors de Segurança Absoluto e Self-Relative.

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.

Nota

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 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 (inclua Ntifs.h)
biblioteca NtosKrnl.lib
de DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL (consulte a seção Comentários)
regras de conformidade de DDI HwStorPortProhibitedDIs, PowerIrpDDis

Consulte também

FltSetSecurityObject

SECURITY_DESCRIPTOR

SECURITY_INFORMATION

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

NtQuerySecurityObject

ZwSetSecurityObject