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 指示扇区零没有预期的 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)
NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
DDI 符合性规则 HwStorPortProhibitedDIS(storport)PowerIrpDDis(wdm)

另请参阅

IoCreateDevice

IoReadPartitionTableEx

IoSetPartitionInformationEx