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 | 对象的安全描述符包含无效的 SID。 这是一个错误代码。 |
STATUS_UNKNOWN_REVISION | 对象的安全描述符的修订级别未知或不受支持。 这是一个错误代码。 |
STATUS_NOT_IMPLEMENTED | FltSetSecurityObject 例程存在,但在调用它的操作系统环境中不受支持。 |
言论
FltSetSecurityObject 例程现提供并支持从 Windows Vista 开始。 在 Windows 2000、Windows XP 和 Server 2003 SP1 中,例程存在但不受支持,并在其中任一环境中调用时返回STATUS_NOT_IMPLEMENTED。
安全描述符可以采用绝对或自相对形式。 在自相对形式中,结构的所有成员都连续位于内存中。 在绝对形式中,结构仅包含指向成员的指针。 有关详细信息,请参阅 Absolute 和 Self-Relative Security 描述符。
有关安全性和访问控制的详细信息,请参阅 Windows SDK 中有关这些主题的文档。
要求
要求 | 价值 |
---|---|
目标平台 | 普遍 |
标头 | fltkernel.h (包括 Fltkernel.h) |
库 | FltMgr.lib |
DLL | Fltmgr.sys |
IRQL | PASSIVE_LEVEL |