IoSetPartitionInformation 関数 (ntddk.h)
IoSetPartitionInformation ルーチンは廃止され、既存のドライバーをサポートするためにのみ提供されています。 新しいドライバーでは 、IoSetPartitionInformationEx を使用する必要があります。
IoSetPartitionInformation は、 DeviceObject で表されるディスクのパーティション テーブル エントリのパーティションの種類と数を設定します。
構文
NTSTATUS IoSetPartitionInformation(
[in] PDEVICE_OBJECT DeviceObject,
[in] ULONG SectorSize,
[in] ULONG PartitionNumber,
[in] ULONG PartitionType
);
パラメーター
[in] DeviceObject
パーティションの種類を設定するデバイスを表すデバイス オブジェクトへのポインター。
[in] SectorSize
ディスク上のセクターのサイズをバイト単位で指定します。
[in] PartitionNumber
パーティションの種類を設定するデバイスのパーティション番号を指定します。
[in] PartitionType
パーティションの型を指定します。 一部のキー パーティションの種類の一覧については、「 PARTITION_INFORMATION」を参照してください。
戻り値
IoSetPartitionInformation がSTATUS_SUCCESSを返した場合、ディスク ドライバーは、デバイス拡張機能でこのパーティションのパーティションの種類の概念を更新します。
注釈
IoSetPartitionInformation は、ディスク ドライバーでのみ使用する必要があります。 他のドライバーでは、代わりに IOCTL_DISK_SET_PARTITION_INFO ディスク I/O 要求を使用する必要があります。
このルーチンは、ディスク デバイス ドライバーが、IRP_MJ_DEVICE_CONTROL要求によってパーティション テーブル エントリのパーティションの種類を設定するように求められたときに呼び出されます。 この要求は通常、パーティションに対して I/O 制御機能を実行するフォーマット・ユーティリティーによって発行されます。 ドライバーは、物理ディスクと、フォーマット ユーティリティが開いているデバイス オブジェクトに関連付けられているパーティションの数を表すデバイス オブジェクトへのポインターを渡します。 IoSetPartitionInformation の基になる HAL ルーチンは、動的パーティション分割のサポートが実装される前に開発されたため、パーティション序数 (ディスク上のパーティションの順序) とパーティション番号 (システムに識別するためにパーティションに割り当てられたパーティション番号) を区別しません。 ドライバーは、実際のパーティション番号ではなく、パーティションの序数を使用して IoSetPartitionInformation を呼び出す必要があります。
このルーチンは同期的であり、ディスク ドライバーのディスパッチ ルーチンまたはドライバー スレッドによって呼び出す必要があります。 したがって、デバイスのパーティションの種類を設定するデバイス制御要求を発行するときに、すべてのユーザーとファイル システムのスレッドが待機状態に入る準備をする必要があります。
このルーチンは、ディスク ドライバーによって渡されたパーティション番号が実際に存在することを前提として動作します。
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), IrqlIoPassive5(wdm), PowerIrpDDis(wdm) |