RtlNormalizeSecurityDescriptor-Funktion (ntddk.h)
Bei dieser Routine wird ein Sicherheitsdeskriptor auf Möglichkeiten zum Ändern seines Layouts untersucht, mit dem Ziel, dass alle zwei gleichwertigen Sicherheitsdeskriptoren so oft wie möglich in $SDS einzelinstanzenfähig sein sollten, und ein sekundäres Ziel, dass der gespeicherte Sicherheitsdeskriptor so klein wie möglich sein sollte.
Syntax
NTSYSAPI BOOLEAN RtlNormalizeSecurityDescriptor(
PSECURITY_DESCRIPTOR *SecurityDescriptor,
ULONG SecurityDescriptorLength,
PSECURITY_DESCRIPTOR *NewSecurityDescriptor,
PULONG NewSecurityDescriptorLength,
BOOLEAN CheckOnly
);
Parameter
SecurityDescriptor
Zeiger auf einen Zeiger auf den zu normalisierenden SECURITY_DESCRIPTOR. Die Sicherheitsbeschreibung muss im selbstrelativen Format vorliegen. Wenn NewSecurityDescriptor nicht bereitgestellt wird, kann dieser Speicherort mit einem neu zugewiesenen Sicherheitsdeskriptor aus dem ausgelagerten Pool aktualisiert werden (die ursprüngliche Sicherheitsbeschreibung wird freigegeben), wenn Änderungen vorgenommen wurden.
SecurityDescriptorLength
Länge in Bytes des zu normalisierenden Sicherheitsdeskriptors.
NewSecurityDescriptor
Wenn vorhanden und auf NULL verweist, empfängt einen Zeiger auf einen neu zugewiesenen Sicherheitsdeskriptor aus dem ausgelagerten Pool, wenn Änderungen vorgenommen wurden, anstatt SecurityDescriptor zu aktualisieren.
Wenn vorhanden und auf nicht NULL verweist, wird stattdessen ein geänderter Sicherheitsdeskriptor direkt im Puffer erstellt (vorausgesetzt, dass er mindestens die Länge SecurityDescriptorLength aufweist), die vom Aufrufer bereitgestellt wird.
NewSecurityDescriptorLength
Empfängt optional die Länge des geänderten Sicherheitsdeskriptors in Bytes, wenn diese Routine Änderungen vornimmt.
CheckOnly
Ein BOOLEAN-Wert, der bei TRUE angibt, dass die Routine keine Aktion ausführen soll, wenn andernfalls Änderungen vorgenommen würden. In diesem Fall wird kein geänderter Sicherheitsdeskriptor erstellt.
Rückgabewert
Gibt TRUE zurück, wenn Änderungen vorgenommen wurden oder vorgenommen wurden, und FALSE andernfalls (einschließlich Fehler).
Hinweise
Wenn diese Routine Änderungen vornimmt, gibt sie den geänderten Sicherheitsdeskriptor zurück, es sei denn, der Aufrufer gibt CheckOnly an und gibt an, dass er nur wissen möchte, ob Änderungen vorgenommen würden.
Die derzeit unterstützten Transformationen sind:
Ordnen Sie die Abschnitte in der Reihenfolge Sacl => Dacl => Owner => Group an.
Vermeiden Sie unnötiges Auffüllen (über die einfache Ausrichtung hinaus) zwischen Abschnitten.
Null beliebiger Ausrichtungsbytes zwischen Abschnitten.
Entfernen Sie alle Sacl-Elemente, die keine ACEs enthalten.
Entfernen Sie doppelte ALLOW ACEs in Sacl und Dacl.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows 10, Version 2004 |
Kopfzeile | ntddk.h (include Ntddk.h) |
IRQL | APC_LEVEL |