Descritores de segurança absolutos e Self-Relative

Um descritor de segurança pode estar em formato absoluto ou auto-relativo . Em formato absoluto, um descritor de segurança contém ponteiros para suas informações, não as informações em si. No formato auto-relativo, um descritor de segurança armazena uma estrutura SECURITY_DESCRIPTOR e informações de segurança associadas em um bloco contíguo de memória. Para determinar se um descritor de segurança é auto-relativo ou absoluto, chame a função GetSecurityDescriptorControl e marcar o sinalizador SE_SELF_RELATIVE do parâmetro SECURITY_DESCRIPTOR_CONTROL. Você pode usar as funções MakeSelfRelativeSD e MakeAbsoluteSD para converter entre esses dois formatos.

O formato absoluto é útil quando você está criando um descritor de segurança e tem ponteiros para todos os componentes, por exemplo, quando as configurações padrão para o proprietário, grupo e ACL discricionária estão disponíveis. Nesse caso, você pode chamar a função InitializeSecurityDescriptor para inicializar uma estrutura SECURITY_DESCRIPTOR e chamar funções como SetSecurityDescriptorDacl para atribuir ponteiros DE ACL e SID ao descritor de segurança.

No formato auto-relativo, um descritor de segurança sempre começa com uma estrutura SECURITY_DESCRIPTOR , mas os outros componentes do descritor de segurança podem seguir a estrutura em qualquer ordem. Em vez de usar endereços de memória, os componentes do descritor de segurança são identificados por deslocamentos desde o início do descritor. Esse formato é útil quando um descritor de segurança deve ser armazenado em disco, transmitido por meio de um protocolo de comunicações ou copiado na memória.

Exceto para MakeAbsoluteSD, todas as funções que retornam um descritor de segurança fazem isso usando o formato auto-relativo. Os descritores de segurança passados como argumentos para uma função podem ser de forma auto-relativa ou absoluta. Para obter mais informações, consulte a documentação da função.