IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS IOCTL (ntddvol.h)

返回一个或多个磁盘上的卷的物理位置。 盘区最初按创建顺序存储,但在灾难恢复期间重新镜像、拆分或中断镜像或执行的作可能会影响磁盘盘区的顺序。

主要代码

IRP_MJ_DEVICE_CONTROL

输入缓冲区

没有。

输入缓冲区长度

没有。

输出缓冲区

驱动程序在 Irp->AssociatedIrp.SystemBuffer的缓冲区中返回VOLUME_DISK_EXTENTS结构,该结构必须至少 sizeof(VOLUME_DISK_EXTENTS)。

输出缓冲区长度

VOLUME_DISK_EXTENTS结构的长度。

状态块

驱动程序设置 Irp->IoStatus.Information状态 字段,如下所示:

  • 如果 Irp->AssociatedIrp.SystemBuffer< 的缓冲区大小为(VOLUME_DISK_EXTENTS),驱动程序会将 Irp->IoStatus.Information 设置为零并返回STATUS_INVALID_PARAMETER。
  • 如果 Irp->AssociatedIrp.SystemBuffer 的缓冲区至少 大小(VOLUME_DISK_EXTENTS),但返回所有数据都太小,驱动程序会将 Irp->IoStatus.Information 设置为 sizeof(VOLUME_DISK_EXTENTS),并将 状态 设置为STATUS_BUFFER_OVERFLOW。
  • 如果 Irp->AssociatedIrp.SystemBuffer 的缓冲区足够大,以便返回所有数据, 驱动程序将 Irp->IoStatus.Information 设置为 sizeof(VOLUME_DISK_EXTENTS) + (NumberOfDiskExtents - 1) * sizeof(DISK_EXTENT) 并将 状态 设置为STATUS_SUCCESS。

要求

要求 价值
最低支持的客户端 Microsoft Windows 2000 中适用于固定磁盘上的卷,但不适用于可移动媒体上的卷。 可用于 Microsoft Windows 2000 SP4 和 Windows XP SP1 中的可移动媒体。
标头 ntddvol.h (包括 Ntddvol.h)

另请参阅

DISK_EXTENT

VOLUME_DISK_EXTENTS