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 要求。
磁碟設備驅動器會在驅動程式初始化期間呼叫此例程。
呼叫者必須負責解除分配此例程與 ExFreePool 所配置的 PartitionBuffer。
這個例程所使用的演算法是由布爾值 ReturnRecognizedPartitions 所決定:
- 讀取每個分割區數據表,並針對找到的每個有效且可辨識的數據分割填入項目數位中的專案 PARTITION_INFORMATION 。 數據分割資訊項目的陣列是由DRIVE_LAYOUT_INFORMATION 結構的 PartitionEntry 成員所指向。 DRIVE_LAYOUT_INFORMATION 結構位於 PartitionBuffer 指向的位置。 擴充的數據分割是用來尋找其他數據分割數據表,但不會為其建置任何專案。
規格需求
需求 | 值 |
---|---|
目標平台 | Universal |
標頭 | ntddk.h (包含 Ntddk.h) |
程式庫 | NtosKrnl.lib |
Dll | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
DDI 合規性規則 | HwStorPortProhibitedDDIs (storport) 、 IrqlIoPassive5 (wdm) 、 PowerIrpDDis (wdm) |