IRP_MJ_SET_SECURITY (FS e drivers de filtro)

Quando enviado

O Gerenciador de E/S envia a solicitação de IRP_MJ_SET_SECURITY. Essa solicitação pode ser enviada, por exemplo, quando um aplicativo de modo de usuário tiver chamado uma função Win32, como SetSecurityInfo.

Operação: Drivers do sistema de arquivos

O driver do sistema de arquivos deve extrair e decodificar o objeto de arquivo para determinar se ele representa um arquivo de usuário ou diretório aberto. Se isso acontecer, o driver deverá processar a solicitação e concluir o IRP. Caso contrário, o driver deverá concluir o IRP conforme apropriado sem processar a solicitação.

Operação: Drivers de filtro do sistema de arquivos herdado

O driver de filtro deve passar esse IRP para o driver mais baixo na pilha.

Parâmetros

Um sistema de arquivos ou driver de filtro chama IoGetCurrentIrpStackLocation para o IRP fornecido para obter um ponteiro para seu próprio local de pilha no IRP. Nos parâmetros a seguir, Irp aponta para o IRP e IrpSp aponta para o IO_STACK_LOCATION. O driver pode usar as informações definidas nos seguintes membros do IRP e no local da pilha IRP para processar uma solicitação de informações de segurança definida:

  • DeviceObject é um ponteiro para o objeto de dispositivo de destino.

  • Irp->O IoStatus aponta para uma estrutura de IO_STATUS_BLOCK que recebe o status de conclusão final e informações sobre a operação solicitada.

  • IrpSp->FileObject aponta para o objeto de arquivo associado a DeviceObject.

    O parâmetro IrpSp-FileObject> contém um ponteiro para o campo RelatedFileObject, que também é uma estrutura FILE_OBJECT. O campo RelatedFileObject da estrutura FILE_OBJECT não é válido durante o processamento de IRP_MJ_SET_SECURITY e não deve ser usado.

  • IrpSp->MajorFunction é definido como IRP_MJ_SET_SECURITY.

  • IrpSp->Parameters.SetSecurity.SecurityDescriptor aponta para uma estrutura SECURITY_DESCRIPTOR que contém os valores das informações de segurança a serem atribuídas ao objeto.

  • IrpSp->Parameters.SetSecurity.SecurityInformation é um valor do tipo SECURITY_INFORMATION que especifica quais informações de segurança devem ser definidas no descritor de segurança e podem ser um dos valores a seguir.

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

Confira também

IO_STACK_LOCATION

IO_STATUS_BLOCK

IoGetCurrentIrpStackLocation

IRP

IRP_MJ_QUERY_SECURITY

SECURITY_DESCRIPTOR

SECURITY_INFORMATION