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 成员指定分区的类型。 对于当前定义的 PartitionType,PARTITION_INFORMATION

返回值

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

注解

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

当磁盘设备驱动程序通过IRP_MJ_DEVICE_CONTROL请求在分区表条目中设置分区信息时,将调用此例程。 此请求通常由格式实用工具发出,该实用工具对分区执行 I/O 控制功能。 驱动程序传递指向表示物理磁盘的设备对象的指针,以及与格式化实用工具已打开的设备对象关联的分区编号。 由于 IoSetPartitionInformationEx 的 HAL 例程是在实现动态分区支持之前开发的,因此它们不区分磁盘) 上分区的顺序的 partitionordinal (和分区 (分配给分区的分区号,以便将其标识给系统) 。 驱动程序必须使用分区的号而不是实际分区号调用 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 完成,则无法将事件设置为“已发出信号”状态。

要求

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

另请参阅

IoReadPartitionTable

IoSetPartitionInformation

IoWritePartitionTable

SET_PARTITION_INFORMATION

SET_PARTITION_INFORMATION_EX