次の方法で共有


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

必要条件

要件 価値
ターゲット プラットフォーム 万国
ヘッダー ntddk.h (Ntddk.h を含む)
ライブラリ NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
DDI コンプライアンス規則 する HwStorPortProhibitedDDDIs(storport), IrqlIoPassive5(wdm), PowerIrpDDis(wdm)

関連項目

IoCreateDevice

IoReadPartitionTable

IoSetPartitionInformation