IoSetPartitionInformationEx 関数 (ntddk.h)

DeviceObject で表されるディスクの場合、IoSetPartitionInformationEx ルーチンは、SET_PARTITION_INFORMATION_EX構造体で指定された情報を使用してパーティション テーブル エントリを初期化します。

構文

NTSTATUS IoSetPartitionInformationEx(
  [in] PDEVICE_OBJECT                DeviceObject,
  [in] ULONG                         PartitionNumber,
  [in] _SET_PARTITION_INFORMATION_EX *PartitionInfo
);

パラメーター

[in] DeviceObject

パーティションの種類を設定するデバイスを表すデバイス オブジェクトへのポインター。

[in] PartitionNumber

パーティションの種類を設定するデバイスのパーティション番号を指定します。

[in] PartitionInfo

PartitionType メンバーがパーティションの型を指定する構造体。 現在定義されている PartitionTypePARTITION_INFORMATION

戻り値

IoSetPartitionInformationEx がSTATUS_SUCCESSを返す場合、ディスク ドライバーは、デバイス拡張機能でこのパーティションのパーティションの種類の概念を更新します。

注釈

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

このルーチンは、ディスク デバイス ドライバーが、IRP_MJ_DEVICE_CONTROL要求によってパーティション テーブル エントリにパーティション情報を設定するように要求されたときに呼び出されます。 この要求は通常、パーティションに対して I/O 制御機能を実行するフォーマット・ユーティリティーによって発行されます。 ドライバーは、物理ディスクと、フォーマット ユーティリティが開いているデバイス オブジェクトに関連付けられているパーティションの数を表すデバイス オブジェクトへのポインターを渡します。 IoSetPartitionInformationEx の基になる HAL ルーチンは、動的パーティション分割のサポートが実装される前に開発されたため、パーティション番号 (ディスク上のパーティションの順序) とパーティション番号 (システムに識別するためにパーティションに割り当てられたパーティション番号) を区別しません。 ドライバーは、実際のパーティション番号ではなく、パーティションの序数を使用して IoSetPartitionInformationEx を呼び出す必要があります。

パーティションがマスター ブート レコード (MBR) の種類のパーティションの場合、 IoSetPartitionInformationEx は、パーティション スタイルと、符号なし文字として表されるパーティション スタイルの設定に制限されます。 これらの値の詳細については、「SET_PARTITION_INFORMATION_MBR」を参照してください。

パーティションが GUID パーティション テーブル (GPT) パーティションの場合、 IoSetPartitionInformationEx は次の値を設定します。パーティション スタイルは、MBR パーティションの場合と同様に、整数ではなく GUID で表されるパーティションの種類です。GUID で表されるパーティション ID。属性のセット (これらの属性の説明については、拡張ファームウェア インターフェイスを参照してください)。パーティションの Unicode 名を指定します。 これらの値の詳細については、「 SET_PARTITION_INFORMATION_GPT 」を参照してください。

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

このルーチンは、ディスク ドライバーによって渡されたパーティション番号が実際に存在することを前提として動作します。

IRQL = PASSIVE_LEVELでこのルーチンを呼び出す必要があります。これは、カーネル イベント オブジェクトを使用してデバイス上の I/O 完了を同期するためです。 イベントをシグナル状態に設定するには、I/O システムの特殊なカーネル APC ルーチンをキューに入れ、I/O 完了のために実行します。

要件

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

こちらもご覧ください

IoReadPartitionTable

IoSetPartitionInformation

IoWritePartitionTable

SET_PARTITION_INFORMATION

SET_PARTITION_INFORMATION_EX