IoSetPartitionInformationEx 函数 (ntddk.h)

对于由 DeviceObject表示的磁盘,IoSetPartitionInformationEx 例程使用 SET_PARTITION_INFORMATION_EX 结构中指定的信息初始化分区表项。

语法

NTSTATUS IoSetPartitionInformationEx(
  [in] PDEVICE_OBJECT                DeviceObject,
  [in] ULONG                         PartitionNumber,
  [in] _SET_PARTITION_INFORMATION_EX *PartitionInfo
);

参数

[in] DeviceObject

指向表示要设置分区类型的设备的设备对象的指针。

[in] PartitionNumber

指定要设置其分区类型的设备上的分区号。

[in] PartitionInfo

PartitionType 成员指定分区的类型的结构。 对于当前定义的 PartitionTypePARTITION_INFORMATION

返回值

如果 IoSetPartitionInformationEx 返回STATUS_SUCCESS,则磁盘驱动程序在其设备扩展中更新此分区的分区类型的概念。

言论

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

当请求磁盘设备驱动程序通过IRP_MJ_DEVICE_CONTROL请求在分区表项中设置分区信息时,将调用此例程。 此请求通常由格式实用工具发出,该实用工具对分区执行 I/O 控制函数。 驱动程序将指针传递给表示物理磁盘的设备对象以及与格式实用工具已打开的设备对象关联的分区数。 由于在实现动态分区之前开发了 IoSetPartitionInformationEx 的 HAL 例程,因此它们不区分 分区序号(即磁盘上的分区顺序)和 分区号(分配给分区的分区号以便将其标识到系统)。 驱动程序必须使用分区 序号 号而不是实际分区号调用 IoSetPartitionInformationEx

如果分区是主启动记录(MBR)类型分区,IoSetPartitionInformationEx 仅限于设置分区样式,分区样式(表示为无符号字符)。 有关这些值的详细信息,请参阅SET_PARTITION_INFORMATION_MBR。

如果分区是 GUID 分区表(GPT)分区,则 IoSetPartitionInformationEx 设置以下值:分区样式、分区类型(由 GUID 表示),而不是 MBR 分区的情况:分区 ID,也由 GUID 表示;一组属性(有关这些属性的说明,请参阅可扩展固件接口):和分区的 Unicode 名称。 有关这些值的详细信息,请参阅 SET_PARTITION_INFORMATION_GPT

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

此例程在假设磁盘驱动程序传入的分区号实际存在的情况下运行。

必须在 IRQL = PASSIVE_LEVEL调用此例程,因为它使用内核事件对象在设备上同步 I/O 完成。 如果没有排队和执行 I/O 系统的特殊内核 APC 例程进行 I/O 完成,则事件无法设置为 Signaled 状态。

要求

要求 价值
目标平台 普遍
标头 ntddk.h (包括 Ntddk.h)
NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL(请参阅“备注”部分)
DDI 符合性规则 HwStorPortProhibitedDIS(storport)PowerIrpDDis(wdm)

另请参阅

IoReadPartitionTable

IoSetPartitionInformation

IoWritePartitionTable

SET_PARTITION_INFORMATION

SET_PARTITION_INFORMATION_EX