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