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 |
---|---|
|
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. |
|
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 |