IOCTL_VOLUME_READ_PLEX IOCTL (ntddvol.h)
ボリュームの特定の plex に対して読み取りを実行します。 すべてのプレックスが同一であるため、ボリューム・マネージャーは、通常の読み取り操作中にボリュームのいずれかのプレックスからデータを取得できます。 ボリューム マネージャーは、物理メディアの I/O 負荷のバランスを取り、読み取りパフォーマンスを最大化するために、ボリュームのプレックス間で読み取りを分散します。
ただし、アプリケーションまたはカーネル モード コンポーネントで、ボリューム マネージャーがデータを選択するのではなく、特定のプレックスからデータを読み取る必要がある場合は、この IOCTL を使用してデータを読み取ることができます。
メジャー コード
入力バッファー
呼び出し元は、論理オフセットを含む VOLUME_READ_PLEX_INPUT 構造体 Irp->AssociatedIrp.SystemBufferのバッファーの先頭に挿入します。
入力バッファーの長さ
IRP の I/O スタック位置の Parameters.DeviceIoControl.InputBufferLength は、入力バッファーのサイズ (バイト単位) を示します。これは、sizeof(VOLUME_READ_PLEX_INPUT) の値以上である必要があります。出力バッファー
IRP_MJ_READと同様に、この IOCTL は、メモリ記述子リスト (MDL) として渡されたメモリ バッファーの読み取りデータを Irp->MdlAddress フィールドに格納します。
出力バッファーの長さ
バッファーの長さ。
状態ブロック
操作が成功した場合、ボリューム・マネージャーは「状況」フィールドをSTATUS_SUCCESSに設定します。
Irp->AssociatedIrp.SystemBuffer のVOLUME_READ_PLEX_INPUT構造体には、512 バイトの境界に配置する必要がある Length メンバーがあります。 長さ に適切なアラインメントがない場合、操作は失敗し、ボリューム・マネージャーは 状況 フィールドをVKE_EINVALに設定します。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows XP 以降で使用できます。 |
ヘッダー | ntddvol.h (Ntddvol.h を含む) |