IoWritePartitionTable 関数 (ntddk.h)

IoWritePartitionTable ルーチンは廃止され、既存のドライバーをサポートするためにのみ提供されています。 新しいドライバーでは 、IoWritePartitionTableEx を使用する必要があります。

IoWritePartitionTable は 、特定のデバイス オブジェクトによって表されるディスク上の各パーティションのパーティション 一覧バッファー内のエントリからパーティション テーブルを書き込みます。

構文

NTSTATUS IoWritePartitionTable(
  [in] PDEVICE_OBJECT            DeviceObject,
  [in] ULONG                     SectorSize,
  [in] ULONG                     SectorsPerTrack,
  [in] ULONG                     NumberOfHeads,
  [in] _DRIVE_LAYOUT_INFORMATION *PartitionBuffer
);

パラメーター

[in] DeviceObject

パーティション テーブルを書き込むディスクを表すデバイス オブジェクトへのポインター。

[in] SectorSize

デバイス上のセクターのサイズをバイト単位で指定します。

[in] SectorsPerTrack

デバイスのトラック サイズを指定します。

[in] NumberOfHeads

円柱あたりのトラック数を指定します。

[in] PartitionBuffer

パーティション リスト エントリを含むドライブ レイアウト バッファーへのポインター。 詳細については、「 DRIVE_LAYOUT_INFORMATION」を参照してください。

戻り値

IoWritePartitionTablo は、すべての書き込みがエラーなしで完了した場合、STATUS_SUCCESSの状態コードを返します。 エラーが発生した場合、 IoWritePartitionTable によって返されるエラー コードには、次の一覧が含まれますが、これらに限定されない場合があります。

リターン コード 説明
STATUS_DEVICE_NOT_READY 正しいディスク ジオメトリの読み取りエラーを示します。
STATUS_INSUFFICIENT_RESOURCES 必要なリソース (ヒープ メモリ、IRP など) の割り当てに失敗したことを示します。
STATUS_UNSUCCESSFUL セクター 0 に予期される MBR ディスク署名がないことを示します。

注釈

IoWritePartitionTable は 、ディスク ドライバーでのみ使用する必要があります。 他のドライバーでは、代わりに IOCTL_DISK_SET_DRIVE_LAYOUT ディスク I/O 要求を使用する必要があります。

IoWritePartitionTable は、パーティション テーブル エントリでパーティションの種類を設定するか、IRP_MJ_DEVICE_CONTROL要求によってディスクを再パーティション分割するようにディスク デバイス ドライバーが要求されたときに呼び出されます。 デバイス制御要求は通常、コンピューター内のパーティションとディスクに対して I/O 制御機能を実行するフォーマット ユーティリティによって発行されます。

パーティションの種類をリセットするために、ドライバーは、物理ディスクと、フォーマット ユーティリティが開いているデバイス オブジェクトに関連付けられているパーティションの番号を表すデバイス オブジェクトへのポインターを渡します。 ディスクを動的に再パーティション分割する場合、ディスク ドライバーは、現在のディスク パーティションを表すデバイス オブジェクトのセットを破棄し、ディスク上の新しいパーティションを表すデバイス オブジェクトの新しいセットを作成する必要があります。

パーティションを作成および削除し、システムの完全な説明を必要とするアプリケーションでは、ReturnRecognizedPartitionsFALSE に設定して IoReadPartitionTable を呼び出す必要があります。 ドライブ レイアウト構造は、ディスクの新しい構成を反映するようにシステム形式ユーティリティによって変更できます。

IoWritePartitionTable は同期です。 ディスク ドライバーのディスパッチ ルーチンまたはドライバー スレッドによって呼び出す必要があります。 したがって、デバイスのパーティションの種類をリセットするデバイス制御要求を発行するときに、すべてのユーザーとファイル システムのスレッドが待機状態に入る準備が必要です。

要件

要件
対象プラットフォーム ユニバーサル
Header ntddk.h (Ntddk.h を含む)
Library NtosKrnl.lib
[DLL] NtosKrnl.exe
IRQL PASSIVE_LEVEL
DDI コンプライアンス規則 HwStorPortProhibitedDDIs(storport), IrqlIoPassive5(wdm), PowerIrpDDis(wdm)

こちらもご覧ください

IoCreateDevice

IoReadPartitionTable

IoSetPartitionInformation