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 SecurityDescriptorNULL 指针。 这是错误代码。
STATUS_INSUFFICIENT_RESOURCES 无法捕获对象的安全描述符。 这是错误代码。
STATUS_INVALID_ACL 对象的安全描述符包含无效的 ACL。 这是错误代码。
STATUS_INVALID_SECURITY_DESCR SecurityDescriptor 未指向有效的安全描述符。 这是错误代码。
STATUS_INVALID_SID 对象的安全描述符包含无效的 SID。 这是错误代码。
STATUS_UNKNOWN_REVISION 对象的安全描述符的修订级别未知或不受支持。 这是错误代码。
STATUS_NOT_IMPLEMENTED FltSetSecurityObject 例程存在,但在调用它的操作系统环境中不受支持。

注解

从 Windows Vista 开始, FltSetSecurityObject 例程已存在并受支持。 在 Windows 2000、Windows XP 和 Server 2003 SP1 中,该例程存在但不受支持,如果在任何这些环境中调用,将返回STATUS_NOT_IMPLEMENTED。

安全描述符可以采用绝对或自相对形式。 在自相对形式中,结构的所有成员都位于内存中。 在绝对形式中,结构仅包含指向成员的指针。 有关详细信息,请参阅绝对和自我相对安全描述符

有关安全性和访问控制的详细信息,请参阅 Windows SDK 中有关这些主题的文档。

要求

要求
目标平台 通用
标头 fltkernel.h (包括 Fltkernel.h)
Library FltMgr.lib
DLL Fltmgr.sys
IRQL PASSIVE_LEVEL

另请参阅

SECURITY_DESCRIPTOR

SECURITY_INFORMATION

ZwQuerySecurityObject

ZwSetSecurityObject

FltQuerySecurityObject