次の方法で共有


IOCTL_VOLUME_READ_PLEX IOCTL (ntddvol.h)

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

ただし、アプリケーションまたはカーネル モード コンポーネントで、ボリューム マネージャーがデータを選択するのではなく、特定のプレックスからデータを読み取る必要がある場合は、この 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 メンバーがあります。 Length に適切なアラインメントがない場合、操作は失敗し、ボリューム マネージャーは [状態] フィールドをVKE_EINVALに設定します。

要件

要件
サポートされている最小のクライアント Windows XP 以降で使用できます。
Header ntddvol.h (Ntddvol.h を含む)

こちらもご覧ください

VOLUME_READ_PLEX_INPUT