Функция FltSetSecurityObject (fltkernel.h)

FltSetSecurityObject задает состояние безопасности объекта.

Синтаксис

NTSTATUS FLTAPI FltSetSecurityObject(
  [in] PFLT_INSTANCE        Instance,
  [in] PFILE_OBJECT         FileObject,
  [in] SECURITY_INFORMATION SecurityInformation,
  [in] PSECURITY_DESCRIPTOR SecurityDescriptor
);

Параметры

[in] Instance

Указатель непрозрачного экземпляра для вызывающего объекта. Этот параметр является обязательным и не может иметь значение NULL.

[in] FileObject

Указатель на файловый объект для объекта, состояние безопасности которого необходимо задать. Вызывающий объект должен иметь доступ, указанный в столбце Значение таблицы, показанной в описании параметра SecurityInformation . Этот параметр является обязательным и не может иметь значение NULL.

[in] SecurityInformation

SECURITY_INFORMATION значение, указывающее сведения, которые необходимо задать как сочетание одного или нескольких из следующих значений.

Значение Значение
OWNER_SECURITY_INFORMATION Указывает, что необходимо задать идентификатор владельца объекта. Требуется доступ WRITE_OWNER.
GROUP_SECURITY_INFORMATION Указывает, что основной идентификатор группы объекта должен быть задан. Требуется доступ WRITE_OWNER.
DACL_SECURITY_INFORMATION Указывает, что необходимо задать список управления доступом (DACL) для объекта. Требуется доступ WRITE_DAC.
SACL_SECURITY_INFORMATION Указывает, что системный ACL (SACL) объекта должен быть задан. Требуется доступ ACCESS_SYSTEM_SECURITY.

[in] SecurityDescriptor

Указатель на дескриптор безопасности, который необходимо задать для объекта .

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

FltSetSecurityObject возвращает STATUS_SUCCESS или соответствующее значение NTSTATUS, например одно из следующих значений:

Код возврата Описание
STATUS_ACCESS_DENIED У вызывающей стороны не было необходимого доступа. Это код ошибки.
STATUS_ACCESS_VIOLATION SecurityDescriptor — это указатель NULL . Это код ошибки.
STATUS_INSUFFICIENT_RESOURCES Не удалось записать дескриптор безопасности объекта. Это код ошибки.
STATUS_INVALID_ACL Дескриптор безопасности объекта содержал недопустимый ACL. Это код ошибки.
STATUS_INVALID_SECURITY_DESCR SecurityDescriptor не указывает на допустимый дескриптор безопасности. Это код ошибки.
STATUS_INVALID_SID Дескриптор безопасности объекта содержал недопустимый идентификатор безопасности. Это код ошибки.
STATUS_UNKNOWN_REVISION Уровень редакции дескриптора безопасности объекта неизвестен или не поддерживается. Это код ошибки.
STATUS_NOT_IMPLEMENTED Подпрограмма FltSetSecurityObject присутствует, но не поддерживается в среде операционной системы, в которой она была вызвана.

Комментарии

Подпрограмма FltSetSecurityObject присутствует и поддерживается начиная с Windows Vista. В Windows 2000, Windows XP и Server 2003 с пакетом обновления 1 (SP1) подпрограмма присутствует, но не поддерживается и возвращает STATUS_NOT_IMPLEMENTED при вызове в любой из этих сред.

Дескриптор безопасности может иметь абсолютную или самостоятельную форму. В относительной форме все члены структуры расположены в памяти непрерывно. В абсолютной форме структура содержит только указатели на члены. Дополнительные сведения см. в разделе Абсолютные и Self-Relative дескрипторы безопасности.

Дополнительные сведения о безопасности и управлении доступом см. в документации по этим темам в windows SDK.

Требования

Требование Значение
Целевая платформа Универсальное
Верхняя часть fltkernel.h (включая Fltkernel.h)
Библиотека FltMgr.lib
DLL Fltmgr.sys
IRQL PASSIVE_LEVEL

См. также раздел

SECURITY_DESCRIPTOR

SECURITY_INFORMATION

ZwQuerySecurityObject

ZwSetSecurityObject

FltQuerySecurityObject