IRP_MJ_QUERY_SECURITY (FS 和筛选器驱动程序)
发送时
I/O 管理器发送IRP_MJ_QUERY_SECURITY请求。 例如,当用户模式应用程序调用 Win32 函数(如 GetSecurityInfo)时,可以发送它。
操作:文件系统驱动程序
文件系统驱动程序应提取和解码文件对象,以确定它是表示用户文件还是目录打开。 如果存在,驱动程序应处理查询并完成 IRP。 否则,驱动程序应根据需要完成 IRP 而不处理查询。
操作:旧版文件系统筛选器驱动程序
筛选器驱动程序应将此 IRP 向下传递到堆栈上的下一个较低驱动程序。
参数
文件系统或筛选器驱动程序调用给定 IRP 的 IoGetCurrentIrpStackLocation ,以获取指向 IRP 中其自身堆栈位置的指针。 在以下参数中, Irp 指向 IRP , 而 IrpSp 指向 IO_STACK_LOCATION。 驱动程序可以使用 IRP 的以下成员和 IRP 堆栈位置中设置的信息来处理查询安全请求:
DeviceObject 是指向目标设备对象的指针。
Irp->IoStatus 指向一个 IO_STATUS_BLOCK 结构,该结构接收最终完成状态和有关所请求操作的信息。
Irp->UserBuffer 指向调用方提供的输出缓冲区,该缓冲区接收指定对象的安全描述符的副本。 调用进程必须有权查看对象安全状态的指定方面。 SECURITY_DESCRIPTOR 结构以自相对格式返回。
IrpSp->FileObject 指向与 DeviceObject 关联的文件对象。
在 Windows XP 及更高版本上,文件对象可以表示命名数据流。 有关命名数据流的详细信息,请参阅 FILE_STREAM_INFORMATION。
IrpSp-FileObject> 参数包含指向 RelatedFileObject 字段的指针,该字段也是FILE_OBJECT结构。 FILE_OBJECT 结构的 RelatedFileObject 字段在处理IRP_MJ_QUERY_SECURITY期间无效,不应使用。
IrpSp->MajorFunction 设置为 IRP_MJ_QUERY_SECURITY。
IrpSp->Parameters.QuerySecurity.Length 是 Irp-UserBuffer> 参数指向的缓冲区的大小(以字节为单位)。
IrpSp->Parameters.QuerySecurity.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访问权限。
另请参阅
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈