Fonction MakeAbsoluteSD (securitybaseapi.h)

La fonction MakeAbsoluteSD crée un descripteur de sécurité au format absolu en utilisant un descripteur de sécurité au format auto-relatif comme modèle.

Syntaxe

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

Paramètres

[in] pSelfRelativeSecurityDescriptor

Pointeur vers une structure de SECURITY_DESCRIPTOR au format auto-relatif. La fonction crée une version au format absolu de ce descripteur de sécurité sans modifier le descripteur de sécurité d’origine.

[out, optional] pAbsoluteSecurityDescriptor

Pointeur vers une mémoire tampon que la fonction remplit avec le corps main d’un descripteur de sécurité de format absolu. Ces informations sont mises en forme en tant que structure SECURITY_DESCRIPTOR .

[in, out] lpdwAbsoluteSecurityDescriptorSize

Pointeur vers une variable qui spécifie la taille de la mémoire tampon pointée vers le paramètre pAbsoluteSD . Si la mémoire tampon n’est pas assez grande pour le descripteur de sécurité, la fonction échoue et définit cette variable à la taille minimale requise.

[out, optional] pDacl

Pointeur vers une mémoire tampon que la fonction remplit avec la liste de contrôle d’accès discrétionnaire (DACL) du descripteur de sécurité au format absolu. Le corps main du descripteur de sécurité au format absolu fait référence à ce pointeur.

[in, out] lpdwDaclSize

Pointeur vers une variable qui spécifie la taille de la mémoire tampon pointée par le paramètre pDacl . Si la mémoire tampon n’est pas assez grande pour la liste de contrôle d’accès (ACL), la fonction échoue et définit cette variable à la taille minimale requise.

[out, optional] pSacl

Pointeur vers une mémoire tampon que la fonction remplit avec la liste de contrôle d’accès système (SACL) du descripteur de sécurité au format absolu. Le corps main du descripteur de sécurité au format absolu fait référence à ce pointeur.

[in, out] lpdwSaclSize

Pointeur vers une variable qui spécifie la taille de la mémoire tampon pointée vers le paramètre pSacl . Si la mémoire tampon n’est pas assez grande pour l’ACL, la fonction échoue et définit cette variable à la taille minimale requise.

[out, optional] pOwner

Pointeur vers une mémoire tampon que la fonction remplit avec l’identificateur de sécurité (SID) du propriétaire du descripteur de sécurité au format absolu. Le corps main du descripteur de sécurité au format absolu fait référence à ce pointeur.

[in, out] lpdwOwnerSize

Pointeur vers une variable qui spécifie la taille de la mémoire tampon pointée par le paramètre pOwner . Si la mémoire tampon n’est pas assez grande pour le SID, la fonction échoue et définit cette variable à la taille minimale requise.

[out, optional] pPrimaryGroup

Pointeur vers une mémoire tampon que la fonction remplit avec le SID du groupe principal du descripteur de sécurité au format absolu. Le corps main du descripteur de sécurité au format absolu fait référence à ce pointeur.

[in, out] lpdwPrimaryGroupSize

Pointeur vers une variable qui spécifie la taille de la mémoire tampon pointée vers le paramètre pPrimaryGroup . Si la mémoire tampon n’est pas assez grande pour le SID, la fonction échoue et définit cette variable à la taille minimale requise.

Valeur retournée

Si la fonction réussit, la fonction retourne une valeur différente de zéro.

Si la fonction échoue, elle retourne zéro. Pour obtenir des informations détaillées sur l’erreur, appelez GetLastError. Les codes de retour possibles incluent, sans s’y limiter, les éléments suivants.

Code/valeur de retour Description
ERROR_INSUFFICIENT_BUFFER
0x7A
Une ou plusieurs des mémoires tampons sont trop petites.

Remarques

Un descripteur de sécurité au format absolu contient des pointeurs vers les informations qu’il contient, plutôt que vers les informations elles-mêmes. Un descripteur de sécurité au format auto-relatif contient les informations dans un bloc contigu de mémoire. 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 dans n’importe quel ordre. Au lieu d’utiliser des adresses mémoire, les composants du descripteur de sécurité auto-relatif sont identifiés par des décalages à partir du début du descripteur de sécurité. Ce format est utile lorsqu’un descripteur de sécurité doit être stocké sur une disquette ou transmis au moyen d’un protocole de communication.

Un serveur qui copie des objets sécurisés sur différents supports peut utiliser la fonction MakeAbsoluteSD pour créer un descripteur de sécurité absolu à partir d’un descripteur de sécurité auto-relatif et la fonction MakeSelfRelativeSD pour créer un descripteur de sécurité auto-relatif à partir d’un descripteur de sécurité absolu.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows XP [applications de bureau | applications UWP]
Serveur minimal pris en charge Windows Server 2003 [applications de bureau | applications UWP]
Plateforme cible Windows
En-tête securitybaseapi.h (inclure Windows.h)
Bibliothèque Advapi32.lib
DLL Advapi32.dll

Voir aussi

Access Control de bas niveau

Fonctions Access Control de bas niveau

MakeSelfRelativeSD

SECURITY_DESCRIPTOR