Функция SeSetSecurityDescriptorInfo (ntifs.h)
Программа SeSetSecurityDescriptorInfo задает дескриптор безопасности объекта.
Синтаксис
NTSTATUS SeSetSecurityDescriptorInfo(
[in, optional] PVOID Object,
[in] PSECURITY_INFORMATION SecurityInformation,
PSECURITY_DESCRIPTOR ModificationDescriptor,
[in, out] PSECURITY_DESCRIPTOR *ObjectsSecurityDescriptor,
[in] POOL_TYPE PoolType,
[in] PGENERIC_MAPPING GenericMapping
);
Параметры
[in, optional] Object
Указатель на объект, дескриптор безопасности которого должен быть задан. Используется для обновления сведений о квоте безопасности.
[in] SecurityInformation
Указатель на битовую маску, указывающую, какие сведения безопасности должны применяться к объекту. Может быть сочетанием одного или нескольких следующих значений.
Ценность | Значение |
---|---|
DACL_SECURITY_INFORMATION | Указывает, что настраивается список управления доступом (DACL) объекта. Требуется WRITE_DAC доступ. |
GROUP_SECURITY_INFORMATION | Указывает идентификатор основной группы объекта. Требуется WRITE_OWNER доступ. |
OWNER_SECURITY_INFORMATION | Указывает идентификатор владельца объекта. Требуется WRITE_OWNER доступ. |
SACL_SECURITY_INFORMATION | Указывает, что устанавливается системный ACL (SACL) объекта. Требуется ACCESS_SYSTEM_SECURITY доступ. |
ModificationDescriptor
Дескриптор безопасности ввода, применяемый к объекту. Ожидается, что вызывающий объект этой подпрограммы будет проверять и записывать переданный дескриптор безопасности перед вызовом SeSetSecurityDescriptorInfoи освободить его после этого.
[in, out] ObjectsSecurityDescriptor
Указатель на указатель на дескриптор безопасности объекта. Дескриптор безопасности должен находиться в автономном формате. Вызывающий объект отвечает за освобождение этой структуры, если она больше не нужна.
[in] PoolType
Указывает тип пула, используемый при выделении нового дескриптора безопасности, который может быть одним из следующих вариантов:
- NonPagedPool
- PagedPool
- NonPagedPoolCacheAligned
- PagedPoolCacheAligned
Как правило, вызывающий объект указывает PagedPoolили другой NonPagedPool, если буфер будет обращаться в IRQL >= DISPATCH_LEVEL или в произвольном контексте потока.
NonPagedPoolMustSucceed и NonPagedPoolCaolCacheAlignedMustS типы пулов устарели и больше не должны использоваться.
[in] GenericMapping
Указатель на структуру GENERIC_MAPPING, которая указывает сопоставление универсальных типов с определенными и стандартными типами доступа для доступа к объекту. Ожидается, что эта структура сопоставления будет безопасной для доступа (т. е. записана при необходимости) перед передачей этой подпрограмме.
Возвращаемое значение
Возвращаемый код | Описание |
---|---|
STATUS_SUCCESS | Дескриптор безопасности объекта был успешно изменен. |
STATUS_BAD_DESCRIPTOR_FORMAT | Дескриптор безопасности предоставленного объекта не был в автономном формате. |
STATUS_NO_SECURITY_ON_OBJECT | У объекта нет дескриптора безопасности. |
Замечания
SeSetSecurityDescriptorInfo изменяет существующий дескриптор безопасности объекта. Если у объекта нет дескриптора безопасности, вызов SeSetSecurityDescriptorInfo завершится ошибкой.
Чтобы указать, поддерживает ли объект автоматическое наследование записей управления доступом (ACE), используйте SeSetSecurityDescriptorInfoEx.
Дескриптор безопасности может находиться в абсолютной или относительной форме. В самостоятельной форме все члены структуры находятся в памяти. В абсолютной форме структура содержит только указатели на элементы.
Дополнительные сведения о безопасности и управлении доступом см. в модели безопасности Windows для разработчиков драйверов и документации по этим разделам в пакете SDK для Windows.
Требования
Требование | Ценность |
---|---|
целевая платформа | Всеобщий |
заголовка | ntifs.h (include Ntifs.h) |
библиотеки | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
См. также
RtlCreateSecurityDescriptorRelative