Compartir a través de


Función RtlSelfRelativeToAbsoluteSD (ntifs.h)

La rutina RtlSelfRelativeToAbsoluteSD crea un nuevo descriptor de seguridad en formato absoluto mediante un descriptor de seguridad en formato auto relativo como plantilla.

Sintaxis

NTSYSAPI NTSTATUS RtlSelfRelativeToAbsoluteSD(
  [in]      PSECURITY_DESCRIPTOR SelfRelativeSecurityDescriptor,
  [out]     PSECURITY_DESCRIPTOR AbsoluteSecurityDescriptor,
  [in, out] PULONG               AbsoluteSecurityDescriptorSize,
  [out]     PACL                 Dacl,
  [in, out] PULONG               DaclSize,
  [out]     PACL                 Sacl,
  [in, out] PULONG               SaclSize,
  [out]     PSID                 Owner,
  [in, out] PULONG               OwnerSize,
  [out]     PSID                 PrimaryGroup,
  [in, out] PULONG               PrimaryGroupSize
);

Parámetros

[in] SelfRelativeSecurityDescriptor

Puntero a un búfer asignado por el autor de la llamada que contiene una estructura SECURITY_DESCRIPTOR en formato auto relativo. RtlSelfRelativeToAbsoluteSD crea una versión de este descriptor de seguridad en formato absoluto sin modificar el original.

[out] AbsoluteSecurityDescriptor

Puntero a un búfer asignado por el autor de la llamada que recibe el cuerpo principal de un descriptor de seguridad de formato absoluto. Esta información tiene el formato de estructura SECURITY_DESCRIPTOR.

[in, out] AbsoluteSecurityDescriptorSize

Puntero a una variable asignada por el autor de la llamada que especifica el tamaño, en bytes, del búfer al que apunta el parámetro AbsoluteSecurityDescriptor . Si el búfer no es lo suficientemente grande como para contener el descriptor de seguridad, RtlSelfRelativeToAbsoluteSD devuelve STATUS_BUFFER_TOO_SMALL y establece esta variable en el tamaño mínimo necesario.

[out] Dacl

Puntero a un búfer asignado por el autor de la llamada que recibe la 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] DaclSize

Puntero a una variable asignada por el autor de la llamada que especifica el tamaño, en bytes, del búfer al que apunta el parámetro Dacl . Si el búfer no es lo suficientemente grande como para contener la DACL, RtlSelfRelativeToAbsoluteSD devuelve STATUS_BUFFER_TOO_SMALL y establece esta variable en el tamaño mínimo necesario.

[out] Sacl

Puntero a un búfer asignado por el autor de la llamada que recibe la 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] SaclSize

Puntero a una variable asignada por el autor de la llamada que especifica el tamaño, en bytes, del búfer al que apunta el parámetro Sacl . Si el búfer no es lo suficientemente grande como para contener sacl, RtlSelfRelativeToAbsoluteSD devuelve STATUS_BUFFER_TOO_SMALL y establece esta variable en el tamaño mínimo necesario.

[out] Owner

Puntero a un búfer asignado por el autor de la llamada que recibe el 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] OwnerSize

Puntero a una variable asignada por el autor de la llamada que especifica el tamaño, en bytes, del búfer al que apunta el parámetro Owner . Si el búfer no es lo suficientemente grande como para contener el SID, RtlSelfRelativeToAbsoluteSD devuelve STATUS_BUFFER_TOO_SMALL y establece esta variable en el tamaño mínimo necesario.

[out] PrimaryGroup

Puntero a un búfer asignado por el autor de la llamada que recibe 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] PrimaryGroupSize

Puntero a una variable asignada por el autor de la llamada que especifica el tamaño, en bytes, del búfer al que apunta el parámetro PrimaryGroup . Si el búfer no es lo suficientemente grande como para contener el SID, RtlSelfRelativeToAbsoluteSD devuelve STATUS_BUFFER_TOO_SMALL y establece esta variable en el tamaño mínimo necesario.

Valor devuelto

RtlSelfRelativeToAbsoluteSD devuelve STATUS_SUCCESS o un valor NTSTATUS adecuado, como uno de los siguientes:

Código devuelto Descripción
STATUS_BAD_DESCRIPTOR_FORMAT
El búfer al que apunta el parámetro AbsoluteSecurityDescriptor no contenía una estructura de SECURITY_DESCRIPTOR en formato absoluto. STATUS_BAD_DESCRIPTOR_FORMAT es un código de error.
STATUS_BUFFER_TOO_SMALL
El búfer al que apunta el parámetro AbsoluteSecurityDescriptor , Dacl, Sacl, Owner o PrimaryGroup era demasiado pequeño. STATUS_BUFFER_TOO_SMALL es un código de error.

Comentarios

Un descriptor de seguridad en formato absoluto contiene punteros a la información, en lugar de contener 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 auto relativo, una estructura de SECURITY_DESCRIPTOR siempre inicia la información, pero los demás componentes del descriptor de seguridad pueden seguir la estructura SECURITY_DESCRIPTOR en cualquier orden. En lugar de usar direcciones de memoria, los componentes del descriptor de seguridad se identifican mediante desplazamientos desde el principio del descriptor de seguridad. Este formato es útil cuando un descriptor de seguridad debe almacenarse en un disquete o transmitirse mediante un protocolo de comunicaciones.

Tenga en cuenta que el parámetro AbsoluteSecurityDescriptor recibe solo el cuerpo principal del descriptor de seguridad absoluto. El descriptor de seguridad absoluto completo consta de este cuerpo principal, además de todos los componentes del descriptor de seguridad devueltos en los búferes Dacl, Sacl, Owner y PrimaryGroup . Por lo tanto, el autor de la llamada no puede liberar estos búferes después de llamar a RtlSelfRelativeToAbsoluteSD, ya que hacerlo invalidaría el descriptor de seguridad absoluto.

Para crear un nuevo descriptor de seguridad en formato auto relativo mediante un descriptor de seguridad en formato absoluto como plantilla, use RtlAbsoluteToSelfRelativeSD.

Para obtener más información sobre la seguridad y el control de acceso, consulte la documentación de Microsoft Windows SDK.

Requisitos

Requisito Value
Cliente mínimo compatible Windows Server 2003 SP1
Plataforma de destino Universal
Encabezado ntifs.h (incluya Ntifs.h)
Library NtosKrnl.lib
Archivo DLL NtosKrnl.exe
IRQL <= APC_LEVEL

Consulte también

ACL

RtlAbsoluteToSelfRelativeSD

RtlCreateSecurityDescriptor

RtlLengthSecurityDescriptor

RtlSetDaclSecurityDescriptor

RtlSetOwnerSecurityDescriptor

RtlValidSecurityDescriptor