IoReadPartitionTable 函数 (ntddk.h)
IoReadPartitionTable 例程 过时,仅提供以支持现有驱动程序。 新驱动程序必须使用 IoReadPartitionTableEx。 IoReadPartitionTable 读取磁盘上具有指定扇区大小的分区列表,并在分区列表中为每个已识别分区创建一个条目。
语法
NTSTATUS IoReadPartitionTable(
[in] PDEVICE_OBJECT DeviceObject,
[in] ULONG SectorSize,
[in] BOOLEAN ReturnRecognizedPartitions,
[out] _DRIVE_LAYOUT_INFORMATION **PartitionBuffer
);
参数
[in] DeviceObject
指向要读取其分区的磁盘的设备对象的指针。
[in] SectorSize
指定磁盘上扇区的大小。
[in] ReturnRecognizedPartitions
指示是否只应返回已识别的分区或所有分区条目。
[out] PartitionBuffer
指向未初始化地址的指针。 如果成功,IoReadPartitionTable 从非分页池分配此缓冲区的内存,并返回其中驱动器布局信息。
返回值
如果读取了至少一个扇区表,此例程将返回STATUS_SUCCESS值。 否则,它将返回错误状态,并将 PartitionBuffer 处的指针设置为 NULL。
言论
IoReadPartitionTable 只能由磁盘驱动程序使用。 其他驱动程序应改用 IOCTL_DISK_GET_DRIVE_LAYOUT 磁盘 I/O 请求。
磁盘设备驱动程序在驱动程序初始化期间调用此例程。
调用方负责解除分配此例程分配的 PartitionBuffer,ExFreePool。
此例程使用的算法由布尔值 ReturnRecognizedPartitions确定:
- 读取每个分区表,对于找到的每个有效和已识别的分区,请填写 PARTITION_INFORMATION 项数组中的元素。 分区信息条目的数组由 DRIVE_LAYOUT_INFORMATION 结构的 PartitionEntry 成员指向。 DRIVE_LAYOUT_INFORMATION结构位于 PartitionBuffer指向的位置。 扩展分区用于查找其他分区表,但不会为其生成任何条目。
要求
要求 | 价值 |
---|---|
目标平台 | 普遍 |
标头 | ntddk.h (包括 Ntddk.h) |
库 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
DDI 符合性规则 | HwStorPortProhibitedDIS(storport)、IrqlIoPassive5(wdm)、PowerIrpDDis(wdm) |