IRP_MJ_SET_SECURITY (FS 和筛选器驱动程序)

发送时

I/O 管理器发送IRP_MJ_SET_SECURITY请求。 例如,当用户模式应用程序调用 Win32 函数(如 SetSecurityInfo)时,可以发送此请求。

操作:文件系统驱动程序

文件系统驱动程序应提取和解码文件对象,以确定它是表示用户文件还是目录打开。 如果存在,驱动程序应处理请求并完成 IRP。 否则,驱动程序应根据需要完成 IRP 而不处理请求。

操作:旧版文件系统筛选器驱动程序

筛选器驱动程序应将此 IRP 向下传递到堆栈上的下一个较低驱动程序。

参数

文件系统或筛选器驱动程序调用给定 IRP 的 IoGetCurrentIrpStackLocation ,以获取指向 IRP 中其自身堆栈位置的指针。 在以下参数中, Irp 指向 IRP而 IrpSp 指向 IO_STACK_LOCATION。 驱动程序可以使用 IRP 和 IRP 堆栈位置的以下成员中设置的信息来处理设置的安全信息请求:

  • DeviceObject 是指向目标设备对象的指针。

  • Irp->IoStatus 指向一个 IO_STATUS_BLOCK 结构,该结构接收最终完成状态和有关所请求操作的信息。

  • IrpSp->FileObject 指向与 DeviceObject 关联的文件对象。

    IrpSp-FileObject> 参数包含指向 RelatedFileObject 字段的指针,该字段也是FILE_OBJECT结构。 FILE_OBJECT 结构的 RelatedFileObject 字段在处理IRP_MJ_SET_SECURITY期间无效,不应使用。

  • IrpSp->MajorFunction 设置为 IRP_MJ_SET_SECURITY。

  • IrpSp->Parameters.SetSecurity.SecurityDescriptor 指向 SECURITY_DESCRIPTOR 结构,该结构包含要分配给对象的安全信息的值。

  • IrpSp->Parameters.SetSecurity.SecurityInformationSECURITY_INFORMATION 类型的值,该值指定要在安全描述符中设置哪些安全信息,可以是以下值之一。

SecurityInformation 值 含义
DACL_SECURITY_INFORMATION 指示正在设置对象的 DACL) (自由访问控制列表。 需要WRITE_DAC访问权限。
GROUP_SECURITY_INFORMATION 指示正在设置对象的主组标识符。 需要WRITE_OWNER访问权限。
OWNER_SECURITY_INFORMATION 指示正在设置对象的所有者标识符。 需要WRITE_OWNER访问权限。
SACL_SECURITY_INFORMATION 指示正在设置对象的系统 ACL (SACL) 。 需要ACCESS_SYSTEM_SECURITY访问权限。

另请参阅

IO_STACK_LOCATION

IO_STATUS_BLOCK

IoGetCurrentIrpStackLocation

IRP

IRP_MJ_QUERY_SECURITY

SECURITY_DESCRIPTOR

SECURITY_INFORMATION