ioSetPartitionInformation 函数 (ntddk.h)
IoSetPartitionInformation 例程已过时,仅为支持现有驱动程序而提供。 新驱动程序必须使用 IoSetPartitionInformationEx。
IoSetPartitionInformation 为 DeviceObject 表示的磁盘设置分区表条目中的分区类型和编号。
语法
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) |