ntQuerySecurityObject 函数 (ntifs.h)
NtQuerySecurityObject 例程检索对象的安全描述符的副本。
语法
__kernel_entry NTSYSCALLAPI NTSTATUS NtQuerySecurityObject(
[in] HANDLE Handle,
[in] SECURITY_INFORMATION SecurityInformation,
[out] PSECURITY_DESCRIPTOR SecurityDescriptor,
[in] ULONG Length,
[out] PULONG LengthNeeded
);
参数
[in] Handle
要查询其安全描述符的 对象的句柄。 此句柄必须具有 在 SecurityInformation 参数说明中显示的表的“含义”列中指定的访问权限。
[in] SecurityInformation
一个SECURITY_INFORMATION值,该值指定要查询的信息作为以下一项或多项的组合。
值 | 含义 |
---|---|
OWNER_SECURITY_INFORMATION | 正在查询对象的所有者标识符。 需要READ_CONTROL访问权限。 |
GROUP_SECURITY_INFORMATION | 正在查询对象的主组标识符。 需要READ_CONTROL访问权限。 |
SACL_SECURITY_INFORMATION | 正在查询对象的系统 ACL (SACL) 。 需要ACCESS_SYSTEM_SECURITY访问权限。 |
DACL_SECURITY_INFORMATION | 正在查询对象的任意访问控制列表 (DACL) 。 需要READ_CONTROL访问权限。 |
[out] SecurityDescriptor
NtQuerySecurityObject 使用指定安全描述符的副本填充的调用方分配的缓冲区。 SECURITY_DESCRIPTOR 结构以自相对格式返回。
[in] Length
SecurityDescriptor 指向的缓冲区的大小(以字节为单位)。
[out] LengthNeeded
指向调用方分配的变量的指针,该变量接收存储复制的安全描述符所需的字节数。
返回值
NtQuerySecurityObject 返回STATUS_SUCCESS或适当的错误状态。 可能的错误状态代码包括以下内容:
返回代码 | 说明 |
---|---|
STATUS_ACCESS_DENIED | 句柄 没有所需的访问权限。 |
STATUS_BUFFER_TOO_SMALL | 对于安全描述符,缓冲区太小。 未将任何安全信息复制到缓冲区。 |
STATUS_INVALID_HANDLE | 句柄 不是有效的句柄。 |
STATUS_OBJECT_TYPE_MISMATCH | 句柄 不是预期类型的句柄。 |
注解
微筛选器应调用 FltQuerySecurityObject。
安全描述符可以采用绝对或自相对形式。 在自相对形式中,结构的所有成员都位于内存中。 在绝对形式中,结构仅包含指向成员的指针。 有关详细信息,请参阅绝对和自我相对安全描述符。
NTFS 文件系统对写入磁盘的文件的安全描述符的大小施加 64K 限制。 (FAT 文件系统不支持文件的安全描述符。) 因此,64K SecurityDescriptor 缓冲区保证足够大,足以容纳返回 SECURITY_DESCRIPTOR 结构。
有关安全性和访问控制的详细信息,请参阅 面向驱动程序开发人员的 Windows 安全模型 以及 Windows SDK 中有关这些主题的文档。
注意
如果在用户模式下调用 NtQuerySecurityObject 函数,则应使用名称“NtQuerySecurityObject”而不是“ZwQuerySecurityObject”。
对于来自内核模式驱动程序的调用,Windows 本机系统服务例程的 NtXxx 和 ZwXxx 版本在处理和解释输入参数的方式上的行为可能有所不同。 有关例程的 NtXxx 和 ZwXxx 版本之间的关系的详细信息,请参阅 使用本机系统服务例程的 Nt 和 Zw 版本。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows XP |
目标平台 | 通用 |
标头 | ntifs.h (包括 Ntifs.h) |
Library | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
DDI 符合性规则 | HwStorPortProhibitedDDI,PowerIrpDDis |