IOCTL_VOLUME_LOGICAL_TO_PHYSICAL IOCTL (ntddvol.h)

返回给定卷逻辑偏移量的物理偏移量和物理磁盘编号。

例如,具有两个 plex 的镜像卷内的逻辑卷偏移量对应于两个物理偏移量,参与镜像的两个磁盘中各一个。 为了响应此 IOCTL,卷管理器返回逻辑卷偏移量的两个物理偏移量和两个物理磁盘编号。

卷管理器为所有类型的基本卷和动态卷支持此 IOCTL。

主要代码

IRP_MJ_DEVICE_CONTROL

输入缓冲区

调用方在 Irp-AssociatedIrp.SystemBuffer> 的缓冲区开头插入包含逻辑偏移量的VOLUME_LOGICAL_OFFSET结构。

输入缓冲区长度

IRP 的 I/O 堆栈位置中的 Parameters.DeviceIoControl.InputBufferLength 指示输入缓冲区的大小(以字节为单位),该大小必须大于或等于 size of (VOLUME_LOGICAL_OFFSET) 的值。

输出缓冲区

输出缓冲区大小必须足够大,以容纳 结构VOLUME_PHYSICAL_OFFSETS,该结构包含 VOLUME_PHYSICAL_OFFSET 类型的结构的可变长度数组。

卷管理器在缓冲区开头的 Irp-AssociatedIrp.SystemBuffer> 处返回VOLUME_PHYSICAL_OFFSETS结构中的一个或多个物理偏移量和磁盘编号。

输出缓冲区长度

IRP 的 I/O 堆栈位置中的 Parameters.DeviceIoControl.OutputBufferLength 指示输出缓冲区的大小(以字节为单位)。

状态块

如果操作成功,则 Status 成员设置为 STATUS_SUCCESS。 否则, Status 成员设置为相应的错误代码。 可能的错误代码包括:

STATUS_BUFFER_TOO_SMALL

输出缓冲区太小。 卷管理器将 Irp-IoStatus.Information> 成员设置为调用方应提供的输出缓冲区的大小。

STATUS_INVALID_PARAMETER

输入缓冲区太小。

要求

要求
最低受支持的客户端 从 Windows XP 开始可用。
标头 ntddvol.h (包括 Ntddvol.h)

另请参阅

IOCTL_VOLUME_PHYSICAL_TO_LOGICAL

VOLUME_LOGICAL_OFFSET

VOLUME_PHYSICAL_OFFSET

VOLUME_PHYSICAL_OFFSETS