Compartilhar via


Função ZwSetSecurityObject (ntifs.h)

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

Sintaxe

NTSYSAPI NTSTATUS ZwSetSecurityObject(
  [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

Um valor SECURITY_INFORMATIONespecificando as informações a serem definidas. Pode ser uma combinação de um ou mais dos valores a seguir.

Valor Significado
DACL_SECURITY_INFORMATION Indica que a DACL (lista de controle de acesso discricionário) do objeto deve ser definida. Requer acesso WRITE_DAC.
GROUP_SECURITY_INFORMATION Indica que o identificador de grupo primário do objeto deve ser definido. Requer acesso WRITE_OWNER.
OWNER_SECURITY_INFORMATION Indica que o identificador do proprietá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.

[in] SecurityDescriptor

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

Retornar valor

ZwSetSecurityObject 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 tem os direitos de acesso necessários.
STATUS_ACCESS_VIOLATION SecurityDescriptor é 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 contém uma ACL inválida.
STATUS_INVALID_HANDLE O identificador não é um identificador válido.
STATUS_INVALID_SECURITY_DESCR SecurityDescriptor não aponta para um descritor de segurança válido.
STATUS_INVALID_SID O descritor de segurança do objeto contém 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 é desconhecido ou não tem 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 Self-Relative" na seção Segurança da documentação do SDK do Windows.

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 ZwSetSecurityObject.

Os chamadores de ZwSetSecurityObject 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 ZwSetSecurityObject 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(storport), PowerIrpDDis(wdm)

Confira também

FltSetSecurityObject

SECURITY_DESCRIPTOR

SECURITY_INFORMATION

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

ZwQuerySecurityObject