Функция 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.
Если присутствует и указывает на значение, отличное от NULL, измененный дескриптор безопасности создается непосредственно в буфере (предполагается, что он не ниже длины SecurityDescriptorLength), предоставленном вызывающим объектом.
NewSecurityDescriptorLength
При необходимости получает длину в байтах измененного дескриптора безопасности, если эта подпрограмма вносит изменения.
CheckOnly
Значение BOOLEAN, которое, если значение TRUE, указывает, что подпрограмма не должна выполнять никаких действий, когда изменения в противном случае были бы внесены. В этом случае измененный дескриптор безопасности не создается.
Возвращаемое значение
Возвращает значение TRUE, если были внесены изменения или были бы внесены, и false в противном случае (включая сбой).
Комментарии
Если эта подпрограмма вносит какие-либо изменения, она возвращает измененный дескриптор безопасности, если вызывающий объект не указывает CheckOnly, указывая, что он только хочет знать, будут ли вноситься изменения.
В настоящее время поддерживаются следующие преобразования:
Расположите разделы в порядке Sacl => Dacl => Владелец => Группа.
Исключите ненужное заполнение (помимо простого выравнивания) между разделами.
Ноль любых байтов выравнивания между разделами.
Удалите все элементы Sacl, которые не содержат ACE.
Исключите повторяющиеся ACE ALLOW в Sacl и Dacl.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 10 версии 2004 |
Верхняя часть | ntddk.h (включая Ntddk.h) |
IRQL | APC_LEVEL |