Функция 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 |