Partager via


Fonction RtlNormalizeSecurityDescriptor (ntddk.h)

Cette routine examine un descripteur de sécurité pour connaître les moyens de modifier sa disposition, avec l’objectif que les deux descripteurs de sécurité équivalents soient en mesure d’être un seul instance dans $SDS le plus souvent possible, et un objectif secondaire que le descripteur de sécurité stocké doit être aussi petit que possible.

Syntaxe

NTSYSAPI BOOLEAN RtlNormalizeSecurityDescriptor(
  PSECURITY_DESCRIPTOR *SecurityDescriptor,
  ULONG                SecurityDescriptorLength,
  PSECURITY_DESCRIPTOR *NewSecurityDescriptor,
  PULONG               NewSecurityDescriptorLength,
  BOOLEAN              CheckOnly
);

Paramètres

SecurityDescriptor

Pointeur vers un pointeur vers la SECURITY_DESCRIPTOR à normaliser. Le descripteur de sécurité doit être au format auto-relatif. Si NewSecurityDescriptor n’est pas fourni, cet emplacement peut être mis à jour avec un descripteur de sécurité nouvellement alloué à partir d’un pool paginé (libérant le descripteur de sécurité d’origine) si des modifications ont été apportées.

SecurityDescriptorLength

Longueur en octets du descripteur de sécurité à normaliser.

NewSecurityDescriptor

S’il est présent et pointe vers NULL, reçoit un pointeur vers un descripteur de sécurité nouvellement alloué à partir d’un pool paginé si des modifications ont été apportées, au lieu de mettre à jour SecurityDescriptor.

S’il est présent et pointe vers non NULL, un descripteur de sécurité modifié est construit directement dans la mémoire tampon (supposé être au moins de longueur SecurityDescriptorLength) fourni par l’appelant.

NewSecurityDescriptorLength

Reçoit éventuellement la longueur en octets du descripteur de sécurité modifié si cette routine apporte des modifications.

CheckOnly

Valeur BOOLEAN qui, si TRUE spécifie que la routine ne doit pas prendre d’action lorsque des modifications seraient apportées autrement. Dans ce cas, un descripteur de sécurité modifié n’est pas créé.

Valeur de retour

Retourne TRUE si des modifications ont été apportées ou auraient été apportées et FALSE sinon (y compris l’échec).

Remarques

Si cette routine apporte des modifications, elle retourne le descripteur de sécurité modifié, sauf si l’appelant spécifie CheckOnly indiquant qu’il souhaite uniquement savoir si des modifications seraient apportées.

Les transformations actuellement prises en charge sont les suivantes :

  • Organisez les sections dans l’ordre Sacl => Dacl => Owner => Group.

  • Éliminez le remplissage inutile (au-delà de l’alignement simple) entre les sections.

  • Zéro octets d’alignement entre les sections.

  • Éliminez les sacl qui ne contiennent pas d’acEs.

  • Éliminez les aces ALLOW dupliquées dans la liste de contrôle d’accès et le dacl.

Exigences

Exigence Valeur
client minimum pris en charge Windows 10, version 2004
d’en-tête ntddk.h (include Ntddk.h)
IRQL APC_LEVEL