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 文件系统不支持 files 的安全描述符。) 因此, SecurityDescriptor 参数指向的 64 KB 缓冲区保证足够大,足以容纳返回 SECURITY_DESCRIPTOR 结构。
FileObject 参数指向的对象可以表示命名数据流。 有关命名数据流的详细信息,请参阅 FILE_STREAM_INFORMATION。
有关安全性和访问控制的详细信息,请参阅Microsoft Windows SDK文档。
要求
要求 | 值 |
---|---|
目标平台 | 通用 |
标头 | fltkernel.h (包括 Fltkernel.h) |
Library | FltMgr.lib |
DLL | Fltmgr.sys |
IRQL | PASSIVE_LEVEL |