Função MakeAbsoluteSD (securitybaseapi.h)

A função MakeAbsoluteSD cria um descritor de segurança em formato absoluto usando um descritor de segurança no formato auto-relativo como um modelo.

Sintaxe

BOOL MakeAbsoluteSD(
  [in]            PSECURITY_DESCRIPTOR pSelfRelativeSecurityDescriptor,
  [out, optional] PSECURITY_DESCRIPTOR pAbsoluteSecurityDescriptor,
  [in, out]       LPDWORD              lpdwAbsoluteSecurityDescriptorSize,
  [out, optional] PACL                 pDacl,
  [in, out]       LPDWORD              lpdwDaclSize,
  [out, optional] PACL                 pSacl,
  [in, out]       LPDWORD              lpdwSaclSize,
  [out, optional] PSID                 pOwner,
  [in, out]       LPDWORD              lpdwOwnerSize,
  [out, optional] PSID                 pPrimaryGroup,
  [in, out]       LPDWORD              lpdwPrimaryGroupSize
);

Parâmetros

[in] pSelfRelativeSecurityDescriptor

Um ponteiro para uma estrutura SECURITY_DESCRIPTOR no formato auto-relativo. A função cria uma versão de formato absoluto desse descritor de segurança sem modificar o descritor de segurança original.

[out, optional] pAbsoluteSecurityDescriptor

Um ponteiro para um buffer que a função preenche com o corpo main de um descritor de segurança de formato absoluto. Essas informações são formatadas como uma estrutura SECURITY_DESCRIPTOR .

[in, out] lpdwAbsoluteSecurityDescriptorSize

Um ponteiro para uma variável que especifica o tamanho do buffer apontado pelo parâmetro pAbsoluteSD . Se o buffer não for grande o suficiente para o descritor de segurança, a função falhará e definirá essa variável com o tamanho mínimo necessário.

[out, optional] pDacl

Um ponteiro para um buffer que a função preenche com a DACL ( lista de controle de acesso discricionário ) do descritor de segurança de formato absoluto. O corpo main do descritor de segurança de formato absoluto faz referência a esse ponteiro.

[in, out] lpdwDaclSize

Um ponteiro para uma variável que especifica o tamanho do buffer apontado pelo parâmetro pDacl . Se o buffer não for grande o suficiente para a ACL ( lista de controle de acesso ), a função falhará e definirá essa variável com o tamanho mínimo necessário.

[out, optional] pSacl

Um ponteiro para um buffer que a função preenche com a SACL ( lista de controle de acesso do sistema ) do descritor de segurança de formato absoluto. O corpo main do descritor de segurança de formato absoluto faz referência a esse ponteiro.

[in, out] lpdwSaclSize

Um ponteiro para uma variável que especifica o tamanho do buffer apontado pelo parâmetro pSacl . Se o buffer não for grande o suficiente para a ACL, a função falhará e definirá essa variável com o tamanho mínimo necessário.

[out, optional] pOwner

Um ponteiro para um buffer que a função preenche com o SID ( identificador de segurança ) do proprietário do descritor de segurança de formato absoluto. O corpo main do descritor de segurança de formato absoluto faz referência a esse ponteiro.

[in, out] lpdwOwnerSize

Um ponteiro para uma variável que especifica o tamanho do buffer apontado pelo parâmetro pOwner . Se o buffer não for grande o suficiente para o SID, a função falhará e definirá essa variável com o tamanho mínimo necessário.

[out, optional] pPrimaryGroup

Um ponteiro para um buffer que a função preenche com o SID do grupo primário do descritor de segurança de formato absoluto. O corpo main do descritor de segurança de formato absoluto faz referência a esse ponteiro.

[in, out] lpdwPrimaryGroupSize

Um ponteiro para uma variável que especifica o tamanho do buffer apontado pelo parâmetro pPrimaryGroup . Se o buffer não for grande o suficiente para o SID, a função falhará e definirá essa variável com o tamanho mínimo necessário.

Retornar valor

Se a função for bem-sucedida, a função retornará diferente de zero.

Se a função falhar, ela retornará zero. Para obter informações de erro estendidas, chame GetLastError. Os códigos de retorno possíveis incluem, mas não se limitam a, o seguinte.

Valor/código retornado Descrição
ERROR_INSUFFICIENT_BUFFER
0x7A
Um ou mais buffers são muito pequenos.

Comentários

Um descritor de segurança em formato absoluto contém ponteiros para as informações presentes nele em vez das informações em si. Um descritor de segurança em formato autorrelativo contém as informações em um bloco de memória contíguo. Em um descritor de segurança auto-relativo, uma estrutura SECURITY_DESCRIPTOR sempre inicia as informações, 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 autorrelativo são identificados por deslocamentos desde o início do descritor de segurança. Esse formato é útil quando um descritor de segurança deve ser armazenado em um disquete ou transmitido por meio de um protocolo de comunicação.

Um servidor que copia objetos protegidos para várias mídias pode usar a função MakeAbsoluteSD para criar um descritor de segurança absoluto de um descritor de segurança auto-relativo e a função MakeSelfRelativeSD para criar um descritor de segurança auto-relativo de um descritor de segurança absoluto.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows XP [aplicativos da área de trabalho | aplicativos UWP]
Servidor mínimo com suporte Windows Server 2003 [aplicativos da área de trabalho | Aplicativos UWP]
Plataforma de Destino Windows
Cabeçalho securitybaseapi.h (inclua Windows.h)
Biblioteca Advapi32.lib
DLL Advapi32.dll

Confira também

Controle de Acesso de baixo nível

Funções de Controle de Acesso de baixo nível

MakeSelfRelativeSD

SECURITY_DESCRIPTOR