共用方式為


IoReadPartitionTable 函式 (ntddk.h)

IoReadPartitionTable 例程已過時,僅提供以支援現有的驅動程式。 新的驅動程序必須使用 IoReadPartitionTableExIoReadPartitionTable 會讀取磁碟上具有指定扇區大小的磁碟分區清單,並在每個已辨識的分割區清單中建立專案。

語法

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)

另請參閱

IOCTL_DISK_GET_DRIVE_LAYOUT

IOCTL_DISK_GET_PARTITION_INFO

IOCTL_DISK_SET_DRIVE_LAYOUT

IoSetPartitionInformation

IoWritePartitionTable