IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS IOCTL (ntddvol.h)

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

主要代码

IRP_MJ_DEVICE_CONTROL

输入缓冲区

无。

输入缓冲区长度

无。

输出缓冲区

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

输出缓冲区长度

VOLUME_DISK_EXTENTS结构的长度。

状态块

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

  • 如果 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 设置为 STATUS_BUFFER_OVERFLOW。
  • 如果 Irp->AssociatedIrp.SystemBuffer 中的缓冲区足够大,以便返回所有数据,驱动程序会将 Irp->IoStatus.Information 设置为 sizeof (VOLUME_DISK_EXTENTS) + ( (NumberOfDiskExtents - 1) * sizeof (DISK_EXTENT) ) 并将 Status 设置为 STATUS_SUCCESS。

要求

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

另请参阅

DISK_EXTENT

VOLUME_DISK_EXTENTS