IoWritePartitionTableEx 函数 (ntddk.h)

IoWritePartitionTableEx 例程为给定设备对象表示的磁盘上每个分区的分区列表缓冲区中的条目写入分区表。

语法

NTSTATUS IoWritePartitionTableEx(
  [in] PDEVICE_OBJECT               DeviceObject,
       _DRIVE_LAYOUT_INFORMATION_EX *DriveLayout
);

参数

[in] DeviceObject

指向表示要写入其分区表的磁盘的设备对象的指针。

DriveLayout

指向包含分区列表条目的驱动器布局缓冲区的指针。 有关详细信息,请参阅 DRIVE_LAYOUT_INFORMATION_EX

返回值

如果所有写入操作均未出错,IoWritePartitionTableEx 将返回状态代码STATUS_SUCCESS。 如果失败, IoWritePartitionTableEx 返回的错误代码可能包括但不限于以下列表:

返回代码 说明
STATUS_DEVICE_NOT_READY 指示读取正确的磁盘几何图形时失败。
STATUS_INSUFFICIENT_RESOURCES 指示未能 (分配必要资源,例如,堆内存、IRP 等) 。
STATUS_UNSUCCESSFUL 指示扇区 0 没有预期的 MBR 磁盘签名。

注解

IoWritePartitionTableEx 替换了过时的例程 IoWritePartitionTable。 与旧例程不同,它可以写入 GUID 分区表以及主启动记录分区表。

IoWritePartitionTableEx 只能由磁盘驱动程序使用。 其他驱动程序应改用 IOCTL_DISK_SET_DRIVE_LAYOUT_EX 磁盘 I/O 请求。

当磁盘设备驱动程序收到IRP_MJ_DEVICE_CONTROL请求以在分区表条目中设置分区类型或重新分区磁盘时,它应调用 IoWritePartitionTableEx。 设备控制请求通常由格式实用工具发出,该实用工具在计算机上的分区和磁盘上执行 I/O 控制功能。

若要重置分区类型,驱动程序会传递指向设备对象的指针,该指针表示物理磁盘,以及与格式实用工具已打开的设备对象关联的分区编号。 当磁盘要动态地重新分区时,磁盘驱动程序必须删除其表示当前磁盘分区的设备对象集,并创建一组表示磁盘上新分区的新设备对象。

若要创建或删除分区,必须通过调用 IoReadPartitionTableEx 获取系统的完整说明。 系统格式实用工具可以修改驱动器布局结构,以反映磁盘的新配置。

IoWritePartitionTableEx 是同步的。 它必须由磁盘驱动程序的 Dispatch 例程或驱动程序线程调用。 因此,在发出设备控制请求重置设备的分区类型时,所有用户和文件系统线程都必须准备好进入等待状态。

要求

要求
目标平台 通用
标头 ntddk.h (包括 Ntddk.h)
Library NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
DDI 符合性规则 HwStorPortProhibitedDDI (storport) PowerIrpDDis (wdm)

另请参阅

IoCreateDevice

IoReadPartitionTableEx

IoSetPartitionInformationEx