Función MakeAbsoluteSD (securitybaseapi.h)

La función MakeAbsoluteSD crea un descriptor de seguridad en formato absoluto mediante un descriptor de seguridad en formato autoconsiente como plantilla.

Sintaxis

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

Puntero a una estructura de SECURITY_DESCRIPTOR en formato relativo propio. La función crea una versión de formato absoluto de este descriptor de seguridad sin modificar el descriptor de seguridad original.

[out, optional] pAbsoluteSecurityDescriptor

Puntero a un búfer que la función rellena con el cuerpo principal de un descriptor de seguridad de formato absoluto. Esta información tiene el formato de estructura SECURITY_DESCRIPTOR .

[in, out] lpdwAbsoluteSecurityDescriptorSize

Puntero a una variable que especifica el tamaño del búfer al que apunta el parámetro pAbsoluteSD . Si el búfer no es lo suficientemente grande para el descriptor de seguridad, se produce un error en la función y establece esta variable en el tamaño mínimo necesario.

[out, optional] pDacl

Puntero a un búfer que la función rellena con la lista de control de acceso discrecional (DACL) del descriptor de seguridad de formato absoluto. El cuerpo principal del descriptor de seguridad de formato absoluto hace referencia a este puntero.

[in, out] lpdwDaclSize

Puntero a una variable que especifica el tamaño del búfer al que apunta el parámetro pDacl . Si el búfer no es lo suficientemente grande para la lista de control de acceso (ACL), se produce un error en la función y establece esta variable en el tamaño mínimo necesario.

[out, optional] pSacl

Puntero a un búfer que la función rellena con la lista de control de acceso del sistema (SACL) del descriptor de seguridad de formato absoluto. El cuerpo principal del descriptor de seguridad de formato absoluto hace referencia a este puntero.

[in, out] lpdwSaclSize

Puntero a una variable que especifica el tamaño del búfer al que apunta el parámetro pSacl . Si el búfer no es lo suficientemente grande para la ACL, se produce un error en la función y establece esta variable en el tamaño mínimo necesario.

[out, optional] pOwner

Puntero a un búfer que la función rellena con el identificador de seguridad (SID) del propietario del descriptor de seguridad de formato absoluto. El cuerpo principal del descriptor de seguridad de formato absoluto hace referencia a este puntero.

[in, out] lpdwOwnerSize

Puntero a una variable que especifica el tamaño del búfer al que apunta el parámetro pOwner . Si el búfer no es lo suficientemente grande para el SID, se produce un error en la función y establece esta variable en el tamaño mínimo necesario.

[out, optional] pPrimaryGroup

Puntero a un búfer que la función rellena con el SID del grupo principal del descriptor de seguridad de formato absoluto. El cuerpo principal del descriptor de seguridad de formato absoluto hace referencia a este puntero.

[in, out] lpdwPrimaryGroupSize

Puntero a una variable que especifica el tamaño del búfer al que apunta el parámetro pPrimaryGroup . Si el búfer no es lo suficientemente grande para el SID, se produce un error en la función y establece esta variable en el tamaño mínimo necesario.

Valor devuelto

Si la función se ejecuta correctamente, la función devuelve un valor distinto de cero.

Si se produce un error en la función, devuelve cero. Para obtener información de error extendida, llame a GetLastError. Entre los códigos de retorno posibles se incluyen, entre otros, los siguientes.

Código o valor devuelto Descripción
ERROR_INSUFFICIENT_BUFFER
0x7A
Uno o varios de los búferes son demasiado pequeños.

Comentarios

Un descriptor de seguridad en formato absoluto contiene punteros a la información que contiene, en lugar de la propia información. Un descriptor de seguridad en formato autorrelativo contiene la información en un bloque contiguo de memoria. En un descriptor de seguridad relativo a sí mismo, una estructura de SECURITY_DESCRIPTOR siempre inicia la información, pero los demás componentes del descriptor de seguridad pueden seguir la estructura en cualquier orden. En lugar de usar direcciones de memoria, los componentes del descriptor de seguridad autorrelativo se identifican mediante desplazamientos desde el principio del descriptor de seguridad. Este formato es útil cuando un descriptor de seguridad debe almacenarse en un disco de disquete o transmitirse mediante un protocolo de comunicaciones.

Un servidor que copia objetos protegidos en varios medios puede usar la función MakeAbsoluteSD para crear un descriptor de seguridad absoluto a partir de un descriptor de seguridad autocontenido y la función MakeSelfRelativeSD para crear un descriptor de seguridad autocontenido a partir de un descriptor de seguridad absoluto.

Requisitos

Requisito Value
Cliente mínimo compatible Windows XP [aplicaciones de escritorio | aplicaciones para UWP]
Servidor mínimo compatible Windows Server 2003 [aplicaciones de escritorio | aplicaciones para UWP]
Plataforma de destino Windows
Encabezado securitybaseapi.h (incluya Windows.h)
Library Advapi32.lib
Archivo DLL Advapi32.dll

Consulte también

Access Control de bajo nivel

Funciones de Access Control de bajo nivel

MakeSelfRelativeSD

SECURITY_DESCRIPTOR