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 制御機能を実行するフォーマット ユーティリティによって発行されます。
パーティションの種類をリセットするために、ドライバーは、物理ディスクと、フォーマット ユーティリティが開いているデバイス オブジェクトに関連付けられているパーティションの番号を表すデバイス オブジェクトへのポインターを渡します。 ディスクを動的に再パーティション分割する場合、ディスク ドライバーは、現在のディスク パーティションを表すデバイス オブジェクトのセットを破棄し、ディスク上の新しいパーティションを表すデバイス オブジェクトの新しいセットを作成する必要があります。
パーティションを作成および削除し、システムの完全な説明を必要とするアプリケーションでは、ReturnRecognizedPartitions を FALSE に設定して IoReadPartitionTable を呼び出す必要があります。 ドライブ レイアウト構造は、ディスクの新しい構成を反映するようにシステム形式ユーティリティによって変更できます。
IoWritePartitionTable は同期です。 ディスク ドライバーのディスパッチ ルーチンまたはドライバー スレッドによって呼び出す必要があります。 したがって、デバイスのパーティションの種類をリセットするデバイス制御要求を発行するときに、すべてのユーザーとファイル システムのスレッドが待機状態に入る準備が必要です。
要件
要件 | 値 |
---|---|
対象プラットフォーム | ユニバーサル |
Header | ntddk.h (Ntddk.h を含む) |
Library | NtosKrnl.lib |
[DLL] | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
DDI コンプライアンス規則 | HwStorPortProhibitedDDIs(storport), IrqlIoPassive5(wdm), PowerIrpDDis(wdm) |