次の方法で共有


IOCTL_VOLUME_READ_PLEX IOCTL (ntddvol.h)

ボリュームの特定の plex に対して読み取りを実行します。 すべてのプレックスが同一であるため、ボリューム・マネージャーは、通常の読み取り操作中にボリュームのいずれかのプレックスからデータを取得できます。 ボリューム マネージャーは、物理メディアの I/O 負荷のバランスを取り、読み取りパフォーマンスを最大化するために、ボリュームのプレックス間で読み取りを分散します。

ただし、アプリケーションまたはカーネル モード コンポーネントで、ボリューム マネージャーがデータを選択するのではなく、特定のプレックスからデータを読み取る必要がある場合は、この IOCTL を使用してデータを読み取ることができます。

メジャー コード

IRP_MJ_DEVICE_CONTROL

入力バッファー

呼び出し元は、論理オフセットを含む 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 を含む)

関連項目

VOLUME_READ_PLEX_INPUT