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

发送时

I/O 管理器发送IRP_MJ_SET_QUOTA请求。 例如,当用户模式应用程序调用了 Win32 方法(例如 IDiskQuotaControl::SetQuotaState)时,可以发送它。

操作:文件系统驱动程序

Windows NT 4.0 中存在IRP_MJ_SET_QUOTA和IRP_MJ_QUERY_QUOTA,但文件系统未使用。 在 Windows 2000 及更高版本中,它们用于 NTFS 中的磁盘配额支持。 新文件系统对这些 IRP 的支持是可选的。

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

筛选器驱动程序应将此 IRP 向下传递到堆栈上的下一个较低驱动程序,除非它需要显式重写配额行为。

参数

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

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

  • DeviceObject->标志 :如果设置了DO_BUFFERED_IO标志,则调用方已请求METHOD_BUFFERED I/O。 否则,调用方已请求METHOD_NEITHER I/O。

  • Irp->如果 DeviceObject-Flags> 中设置了DO_BUFFERED_IO标志,则 AssociatedIrp.SystemBuffer 指向要用作中间系统缓冲区的系统提供的缓冲区。 否则,此成员将设置为 NULL

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

  • Irp->UserBuffer 指向调用方提供的缓冲区,该缓冲区包含要为卷添加或修改的配额条目。

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

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

  • IrpSp->MajorFunction 设置为 IRP_MJ_SET_QUOTA。

  • IrpSp->Parameters.SetQuota.LengthIrp-UserBuffer> 指向的缓冲区的长度(以字节为单位)。

另请参阅

FILE_QUOTA_INFORMATION

IO_STACK_LOCATION

IO_STATUS_BLOCK

IoCheckQuotaBufferValidity

IoGetCurrentIrpStackLocation

IRP

IRP_MJ_QUERY_QUOTA