IoSetPartitionInformation 函数 (ntddk.h)

IoSetPartitionInformation 例程 过时,仅提供以支持现有驱动程序。 新驱动程序必须使用 IoSetPartitionInformationEx

IoSetPartitionInformationDeviceObject表示的磁盘的分区表项设置分区类型和编号。

语法

NTSTATUS IoSetPartitionInformation(
  [in] PDEVICE_OBJECT DeviceObject,
  [in] ULONG          SectorSize,
  [in] ULONG          PartitionNumber,
  [in] ULONG          PartitionType
);

参数

[in] DeviceObject

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

[in] SectorSize

指定磁盘上扇区的大小(以字节为单位)。

[in] PartitionNumber

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

[in] PartitionType

指定分区的类型。 有关某些键分区类型的列表,请参阅 PARTITION_INFORMATION

返回值

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

言论

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

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

此例程是同步的,必须由磁盘驱动程序的 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)IrqlIoPassive5(wdm)PowerIrpDDis(wdm)

另请参阅

IoReadPartitionTable

IoSetPartitionInformationEx

IoWritePartitionTable