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 は非ページ プールからこのバッファーのメモリを割り当て、その中のドライブ レイアウト情報を返します。

戻り値

このルーチンは、少なくとも 1 つのセクター テーブルが読み取られた場合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 が指す場所にあります。 拡張パーティションは、他のパーティション テーブルを検索するために配置されますが、それらのエントリは作成されません。
各パーティション テーブルを読み取り、各エントリごとにパーティション情報エントリを入力します。 拡張パーティションは、ディスク上の各パーティションを検索するために配置されます。エントリは、これらに対してもビルドされます。

要件

要件
対象プラットフォーム ユニバーサル
Header ntddk.h (Ntddk.h を含む)
Library 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