Partager via


RtlSelfRelativeToAbsoluteSD, fonction (ntifs.h)

La routine RtlSelfRelativeToAbsoluteSD crée un descripteur de sécurité au format absolu à l’aide d’un descripteur de sécurité au format auto-relatif comme modèle.

Syntaxe

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
);

Paramètres

[in] SelfRelativeSecurityDescriptor

Pointeur vers une mémoire tampon allouée par l’appelant qui contient une structure SECURITY_DESCRIPTOR au format auto-relatif. RtlSelfRelativeToAbsoluteSD crée une version de ce descripteur de sécurité au format absolu sans modifier l’original.

[out] AbsoluteSecurityDescriptor

Pointeur vers une mémoire tampon allouée par l’appelant qui reçoit le corps principal d’un descripteur de sécurité de format absolu. Ces informations sont mises en forme sous forme de structure SECURITY_DESCRIPTOR.

[in, out] AbsoluteSecurityDescriptorSize

Pointeur vers une variable allouée par l’appelant qui spécifie la taille, en octets, de la mémoire tampon pointée par le paramètre AbsoluteSecurityDescriptor. Si la mémoire tampon n’est pas suffisamment grande pour contenir le descripteur de sécurité, RtlSelfRelativeToAbsoluteSD retourne STATUS_BUFFER_TOO_SMALL et définit cette variable sur la taille minimale requise.

[out] Dacl

Pointeur vers une mémoire tampon allouée par l’appelant qui reçoit la liste dacl du descripteur de sécurité au format absolu. Le corps principal du descripteur de sécurité au format absolu fait référence à ce pointeur.

[in, out] DaclSize

Pointeur vers une variable allouée par l’appelant qui spécifie la taille, en octets, de la mémoire tampon pointée par le paramètre Dacl. Si la mémoire tampon n’est pas suffisamment grande pour contenir la liste de contrôle de contrôle d’accès, RtlSelfRelativeToAbsoluteSD retourne STATUS_BUFFER_TOO_SMALL et définit cette variable sur la taille minimale requise.

[out] Sacl

Pointeur vers une mémoire tampon allouée par l’appelant qui reçoit la liste de contrôle d’accès partagé du descripteur de sécurité au format absolu. Le corps principal du descripteur de sécurité au format absolu fait référence à ce pointeur.

[in, out] SaclSize

Pointeur vers une variable allouée par l’appelant qui spécifie la taille, en octets, de la mémoire tampon pointée par le paramètre Sacl. Si la mémoire tampon n’est pas suffisamment grande pour contenir la liste de contrôle d’accès partagé, RtlSelfRelativeToAbsoluteSD retourne STATUS_BUFFER_TOO_SMALL et définit cette variable sur la taille minimale requise.

[out] Owner

Pointeur vers une mémoire tampon allouée par l’appelant qui reçoit le SID du propriétaire du descripteur de sécurité au format absolu. Le corps principal du descripteur de sécurité au format absolu fait référence à ce pointeur.

[in, out] OwnerSize

Pointeur vers une variable allouée par l’appelant qui spécifie la taille, en octets, de la mémoire tampon pointée par le paramètre Owner. Si la mémoire tampon n’est pas suffisamment grande pour contenir le SID, RtlSelfRelativeToAbsoluteSD retourne STATUS_BUFFER_TOO_SMALL et définit cette variable sur la taille minimale requise.

[out] PrimaryGroup

Pointeur vers une mémoire tampon allouée par l’appelant qui reçoit le SID du groupe principal du descripteur de sécurité au format absolu. Le corps principal du descripteur de sécurité au format absolu fait référence à ce pointeur.

[in, out] PrimaryGroupSize

Pointeur vers une variable allouée par l’appelant qui spécifie la taille, en octets, de la mémoire tampon pointée par le paramètre PrimaryGroup. Si la mémoire tampon n’est pas suffisamment grande pour contenir le SID, RtlSelfRelativeToAbsoluteSD retourne STATUS_BUFFER_TOO_SMALL et définit cette variable sur la taille minimale requise.

Valeur de retour

RtlSelfRelativeToAbsoluteSD retourne STATUS_SUCCESS ou une valeur NTSTATUS appropriée, comme l’une des valeurs suivantes :

Retourner le code Description
STATUS_BAD_DESCRIPTOR_FORMAT
La mémoire tampon pointée par le paramètre AbsoluteSecurityDescriptor ne contenait pas de structure SECURITY_DESCRIPTOR au format absolu. STATUS_BAD_DESCRIPTOR_FORMAT est un code d’erreur.
STATUS_BUFFER_TOO_SMALL
La mémoire tampon pointée par le AbsoluteSecurityDescriptor, Dacl, Sacl, Ownerou paramètre PrimaryGroup était trop petit. STATUS_BUFFER_TOO_SMALL est un code d’erreur.

Remarques

Un descripteur de sécurité au format absolu contient des pointeurs vers les informations, au lieu de contenir les informations elles-mêmes. Un descripteur de sécurité au format auto-relatif contient les informations dans un bloc de mémoire contiguë. Dans un descripteur de sécurité auto-relatif, une structure SECURITY_DESCRIPTOR démarre toujours les informations, mais les autres composants du descripteur de sécurité peuvent suivre la structure SECURITY_DESCRIPTOR dans n’importe quel ordre. Au lieu d’utiliser des adresses mémoire, les composants du descripteur de sécurité sont identifiés par des décalages depuis le début du descripteur de sécurité. Ce format est utile lorsqu’un descripteur de sécurité doit être stocké sur un disque de floppy ou transmis par le biais d’un protocole de communication.

Notez que le paramètre AbsoluteSecurityDescriptor reçoit uniquement le corps principal du descripteur de sécurité absolu. L’ensemble du descripteur de sécurité absolu se compose de ce corps principal, ainsi que de tous les composants de descripteur de sécurité retournés dans les mémoires tampons Dacl, Sacl, Owneret PrimaryGroup buffers. Ainsi, l’appelant ne peut pas libérer ces mémoires tampons après avoir appelé RtlSelfRelativeToAbsoluteSD, car cela invaliderait le descripteur de sécurité absolu.

Pour créer un descripteur de sécurité au format auto-relatif à l’aide d’un descripteur de sécurité au format absolu en tant que modèle, utilisez RtlAbsoluteToSelfRelativeSD.

Pour plus d’informations sur la sécurité et le contrôle d’accès, consultez la documentation du Kit de développement logiciel (SDK) Microsoft Windows.

Exigences

Exigence Valeur
client minimum pris en charge Windows Server 2003 SP1
plateforme cible Universel
d’en-tête ntifs.h (include Ntifs.h)
bibliothèque NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL

Voir aussi

de liste de contrôle d’accès

RtlAbsoluteToSelfRelativeSD

RtlCreateSecurityDescriptor

RtlLengthSecurityDescriptor

RtlSetDaclSecurityDescriptor

RtlSetOwnerSecurityDescriptor

RtlValidSecurityDescriptor