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 完成,则无法将事件设置为信号状态。

要求

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

另请参阅

IoReadPartitionTable

IoSetPartitionInformationEx

IoWritePartitionTable