Freigeben über


RtlNormalizeSecurityDescriptor-Funktion (ntddk.h)

Diese Routine untersucht einen Sicherheitsdeskriptor, um das Layout zu ändern, mit dem Ziel, dass alle zwei gleichwertigen Sicherheitsdeskriptoren so oft wie möglich in $SDS instanziert werden 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

Zeigen Sie auf einen Zeiger auf die SECURITY_DESCRIPTOR, um die Normalisierung zu normalisieren. Der Sicherheitsdeskriptor muss im selbstrelativen Format vorliegen. Wenn NewSecurityDescriptor- nicht bereitgestellt wird, kann dieser Speicherort mit einem neu zugewiesenen Sicherheitsdeskriptor aus dem ausgelagerten Pool (freistellen des ursprünglichen Sicherheitsdeskriptors) aktualisiert werden, wenn Änderungen vorgenommen wurden.

SecurityDescriptorLength

Länge in Byte des Sicherheitsdeskriptors, der normalisiert werden soll.

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 SecurityDescriptorzu 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) vom Aufrufer bereitgestellt wird.

NewSecurityDescriptorLength

Empfängt optional die Länge in Byte des geänderten Sicherheitsdeskriptors, wenn diese Routine Änderungen vornimmt.

CheckOnly

Ein BOOLESCHER Wert, der, wenn TRUE angibt, dass die Routine keine Aktion ausführen soll, wenn Änderungen andernfalls vorgenommen werden. In diesem Fall wird kein geänderter Sicherheitsdeskriptor erstellt.

Rückgabewert

Gibt TRUE zurück, wenn Änderungen vorgenommen oder vorgenommen wurden, andernfalls FALSE (einschließlich Fehler).

Bemerkungen

Wenn diese Routine Änderungen vorgibt, gibt sie den geänderten Sicherheitsdeskriptor zurück, es sei denn, der Aufrufer gibt CheckOnly an, der angibt, dass er nur wissen möchte, ob Änderungen vorgenommen werden.

Die derzeit unterstützten Transformationen sind:

  • Ordnen Sie die Abschnitte in der Reihenfolge Sacl => Dacl => Owner => Gruppe an.

  • Vermeiden Sie unnötigen Abstand (über die einfache Ausrichtung hinaus) zwischen Abschnitten.

  • Null aller Ausrichtungsbytes zwischen Abschnitten.

  • Entfernen Sie alle Sacl, die keine ACEs enthalten.

  • Entfernen Sie doppelte ALLOW ACEs in sacl und Dacl.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Windows 10, Version 2004
Header- ntddk.h (include Ntddk.h)
IRQL- APC_LEVEL