FltQuerySecurityObject 函数 (fltkernel.h)
FltQuerySecurityObject 检索对象的安全描述符的副本。
语法
NTSTATUS FLTAPI FltQuerySecurityObject(
[in] PFLT_INSTANCE Instance,
[in] PFILE_OBJECT FileObject,
[in] SECURITY_INFORMATION SecurityInformation,
[in, out] PSECURITY_DESCRIPTOR SecurityDescriptor,
[in] ULONG Length,
[out, optional] PULONG LengthNeeded
);
参数
[in] Instance
调用方不透明实例指针。 此参数是必需的,不能 NULL。
[in] FileObject
要查询其安全描述符的对象的文件对象指针。 此参数是必需的,不能 NULL。
[in] SecurityInformation
SECURITY_INFORMATION 值。 此参数是必需的,必须满足以下条件之一:
SecurityInformation 值 | 意义 |
---|---|
OWNER_SECURITY_INFORMATION | 正在查询对象的所有者标识符。 需要 READ_CONTROL 访问权限。 |
GROUP_SECURITY_INFORMATION | 正在查询对象的主要组标识符。 需要 READ_CONTROL 访问权限。 |
DACL_SECURITY_INFORMATION | 正在查询对象的自由访问控制列表(DACL)。 需要 READ_CONTROL 访问权限。 |
SACL_SECURITY_INFORMATION | 正在查询对象的系统 ACL (SACL)。 需要 ACCESS_SYSTEM_SECURITY 访问权限。 |
[in, out] SecurityDescriptor
指向调用方提供的输出缓冲区的指针,该缓冲区接收指定对象的安全描述符的副本。 SECURITY_DESCRIPTOR 结构以相对格式返回。 此参数是可选的,可以 NULL。
[in] Length
SecurityDescriptor 缓冲区的大小(以字节为单位)。
[out, optional] LengthNeeded
指向调用方分配的变量的指针,该变量接收存储 SecurityDescriptor 参数指向的缓冲区中返回的复制的安全描述符所需的字节数。 此参数是可选的,可以 NULL。
返回值
FltQuerySecurityObject 返回STATUS_SUCCESS或适当的 NTSTATUS 值,例如以下值之一:
返回代码 | 描述 |
---|---|
|
调用方没有所需的访问权限。 这是一个错误代码。 |
|
缓冲区太小,无法包含安全描述符。 未将任何安全信息复制到缓冲区。 这是一个错误代码。 |
言论
安全描述符可以采用绝对或自相对形式。 在自相对形式中,结构的所有成员都连续位于内存中。 在绝对形式中,结构仅包含指向其成员的指针。
NTFS 文件系统对写入文件的安全描述符的大小施加 64 KB 的限制。 (FAT 文件系统不支持文件的安全描述符。因此,保证 SecurityDescriptor 参数指向的 64 KB 缓冲区足够大,以便保存返回 SECURITY_DESCRIPTOR 结构。
FileObject 参数指向的对象可以表示命名数据流。 有关命名数据流的详细信息,请参阅 FILE_STREAM_INFORMATION。
有关安全性和访问控制的详细信息,请参阅 Microsoft Windows SDK 文档。
要求
要求 | 价值 |
---|---|
目标平台 | 普遍 |
标头 | fltkernel.h (包括 Fltkernel.h) |
库 | FltMgr.lib |
DLL | Fltmgr.sys |
IRQL | PASSIVE_LEVEL |