Поделиться через


Функция RtlNormalizeSecurityDescriptor (ntddk.h)

Эта подпрограмма проверяет дескриптор безопасности для способов изменения его макета, с целью того, что любые два эквивалентных дескриптора безопасности должны быть в $SDS как можно чаще, и вторичная цель, которую хранимый дескриптор безопасности должен быть как можно меньше.

Синтаксис

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

Параметры

SecurityDescriptor

Указатель на указатель на SECURITY_DESCRIPTOR для нормализации. Дескриптор безопасности должен находиться в автономном формате. Если NewSecurityDescriptor не предоставлено, это расположение может быть обновлено с новым выделенным дескриптором безопасности из страничного пула (освобождение исходного дескриптора безопасности) при внесении изменений.

SecurityDescriptorLength

Длина дескриптора безопасности в байтах для нормализации.

NewSecurityDescriptor

Если присутствует и указывает на ЗНАЧЕНИЕ NULL, получает указатель на недавно выделенный дескриптор безопасности из пула страниц, если были сделаны изменения, а не обновление SecurityDescriptor.

Если присутствует и указывает на ненулевое значение, измененный дескриптор безопасности создается непосредственно в буфере (предполагается, что длина не ниже длины SecurityDescriptorLength) предоставляется вызывающим объектом.

NewSecurityDescriptorLength

При необходимости получает длину в байтах измененного дескриптора безопасности, если эта подпрограмма вносит изменения.

CheckOnly

Значение BOOLEAN, указывающее, что подпрограмма не должна принимать никаких действий, когда изменения будут сделаны в противном случае. В этом случае измененный дескриптор безопасности не создается.

Возвращаемое значение

Возвращает значение TRUE, если изменения были сделаны или были бы сделаны, и значение FALSE в противном случае (включая сбой).

Замечания

Если эта подпрограмма вносит какие-либо изменения, она возвращает измененный дескриптор безопасности, если вызывающий объект не указывает CheckOnly, указывающий, что они хотят только знать, будут ли изменения сделаны.

В настоящее время поддерживаются преобразования:

  • Упорядочить разделы в порядке Sacl => Dacl => Owner => Group.

  • Исключите ненужные заполнение (за пределами простого выравнивания) между разделами.

  • Ноль байтов выравнивания между разделами.

  • Исключите любой sacl, который не содержит acEs.

  • Устранение повторяющихся ACES в Sacl и Dacl.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows 10 версии 2004
заголовка ntddk.h (include Ntddk.h)
IRQL APC_LEVEL