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 メンバーがパーティションの型を指定する構造体。 現在定義されている PartitionType 値 PARTITION_INFORMATION。
戻り値
IoSetPartitionInformationEx STATUS_SUCCESSが返された場合、ディスク ドライバーは、デバイス拡張機能でこのパーティションの種類のパーティションの概念を更新します。
備考
IoSetPartitionInformationEx は、ディスク ドライバーでのみ使用する必要があります。 他のドライバーでは、代わりに IOCTL_DISK_SET_PARTITION_INFO_EX ディスク I/O 要求を使用する必要があります。
このルーチンは、ディスク デバイス ドライバーが、IRP_MJ_DEVICE_CONTROL要求によってパーティション テーブル エントリにパーティション情報を設定するように要求されたときに呼び出されます。 通常、この要求はフォーマット・ユーティリティーによって発行され、パーティションに対して入出力制御機能を実行します。 ドライバーは、物理ディスクと、フォーマット ユーティリティが開いているデバイス オブジェクトに関連付けられているパーティションの数を表すデバイス オブジェクトへのポインターを渡します。 IoSetPartitionInformationEx 基になる HAL ルーチンは、動的パーティション分割のサポートが実装される前に開発されたため、パーティション分割 (ディスク上のパーティションの順序) と パーティション番号 (システムに識別するためにパーティションに割り当てられたパーティション番号) を区別しません。 ドライバーは、実際 パーティション番号ではなく、パーティションの 序数 番号を使用して IoSetPartitionInformationEx を呼び出す必要があります。
パーティションがマスター ブート レコード (MBR) 型のパーティションの場合、IoSetPartitionInformationEx は、パーティション スタイルと、署名されていない文字として表されるパーティション スタイルの設定に制限されます。 これらの値の詳細については、SET_PARTITION_INFORMATION_MBRを参照してください。
パーティションが GUID パーティション テーブル (GPT) パーティションの場合、IoSetPartitionInformationEx は、MBR パーティションの場合と同様に、整数ではなく GUID で表されるパーティション スタイル、パーティションの種類の値を設定します。GUID で表されるパーティション ID。属性のセット (これらの属性の説明については、拡張ファームウェア インターフェイスを参照してください)。パーティションの Unicode 名を指定します。 これらの値の詳細については、SET_PARTITION_INFORMATION_GPT を参照してください。
このルーチンは同期的であり、ディスク ドライバーのディスパッチ ルーチンまたはドライバー スレッドによって呼び出される必要があります。 したがって、デバイスのパーティションの種類を設定するデバイス制御要求を発行するときに待機状態に入るために、すべてのユーザーおよびファイル システム スレッドを準備する必要があります。
このルーチンは、ディスク ドライバーによって渡されるパーティション番号が実際に存在することを前提として動作します。
このルーチンは、カーネル イベント オブジェクトを使用してデバイスの I/O 完了を同期するため、IRQL = PASSIVE_LEVEL で呼び出す必要があります。 I/O システムの特殊なカーネル APC ルーチンをキューに入れ、I/O 完了のために実行しないと、イベントを Signaled 状態に設定することはできません。
必要条件
要件 | 価値 |
---|---|
ターゲット プラットフォーム の | 万国 |
ヘッダー | ntddk.h (Ntddk.h を含む) |
ライブラリ | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL (「解説」セクションを参照) |
DDI コンプライアンス規則 を する | HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm) |
関連項目
IoReadPartitionTable の
IoSetPartitionInformation の
IoWritePartitionTable の