IoWritePartitionTableEx 関数 (ntddk.h)

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

構文

NTSTATUS IoWritePartitionTableEx(
  [in] PDEVICE_OBJECT               DeviceObject,
       _DRIVE_LAYOUT_INFORMATION_EX *DriveLayout
);

パラメーター

[in] DeviceObject

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

DriveLayout

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

戻り値

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

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

注釈

IoWritePartitionTableEx は、古いルーチン IoWritePartitionTable を置き換えます。 以前のルーチンとは異なり、GUID パーティション テーブルとマスター ブート レコード パーティション テーブルに書き込むことができます。

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

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

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

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

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

要件

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

こちらもご覧ください

IoCreateDevice

IoReadPartitionTableEx

IoSetPartitionInformationEx