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 |