次の方法で共有


IRP_MJ_READ 共用体の FLT_PARAMETERS

次の共用体コンポーネントは、操作における FLT_IO_PARAMETER_BLOCK 構造体の MajorFunction フィールドが IRP_MJ_READ であるときに使用されます。

構文

typedef union _FLT_PARAMETERS {
  ...    ;
  struct {
    ULONG                   Length;
    ULONG POINTER_ALIGNMENT Key;
    LARGE_INTEGER           ByteOffset;
    PVOID                   ReadBuffer;
    PMDL                    MdlAddress;
  } Read;
  ...    ;
} FLT_PARAMETERS, *PFLT_PARAMETERS;

メンバー

  • Read: 次のメンバーが含まれる構造体。

  • Length: 読み取るデータの長さ (バイト単位)。

  • Key: ターゲット ファイルのバイト範囲ロックに関連付けられているキー値。

  • ByteOffset: 読み取るデータのファイル内の開始バイト オフセット。

  • ReadBuffer: ファイルから読み取られたデータを受け取るバッファーへのポインター。 このメンバーは省略可能であり、MdlAddress で MDL が指定されている場合は NULL にすることができます。 「解説」を参照してください。

  • MdlAddress: ReadBuffer メンバーが指すバッファーを記述するメモリ記述子リスト (MDL) のアドレス。 このメンバーは省略可能であり、ReadBuffer でバッファーが指定されている場合は NULL にすることができます。 「解説」を参照してください。

解説

IRP_MJ_READ 操作における FLT_PARAMETERS 構造体には、コールバックデータ (FLT_CALLBACK_DATA) 構造体が表す読み取り操作用のパラメーターが含まれます。 これは、FLT_IO_PARAMETER_BLOCK 構造体に含まれています。

ReadBuffer バッファーと MdlAddress バッファーの両方が指定されている場合は、ミニフィルターで MDL を使用することをお勧めします。 ReadBuffer が指すメモリは、呼び出し元プロセスのコンテキスト内でアクセスされるユーザー モード アドレスである場合、またはカーネル モード アドレスである場合に有効です。

ミニフィルターが MdlAddress の値を変更した場合、操作後のコールバックの後、フィルター マネージャーは現在 MdlAddress に格納されている MDL を解放し、MdlAddress の以前の値を復元します。

IRP_MN_COMPLETE ビットが Iopb-MinorFunction> で設定されている場合、MdlAddress は CcMdlReadComplete に送信するアドレスです

Iopb-MinorFunction> でIRP_MN_MDL ビット (IRP_MN_COMPLETE ビットではなく) が設定されている場合、MdlAddress は CcMdlRead に送信するアドレスです。

IRP_MJ_READ には、IRP ベースの操作または高速 I/O 操作を指定できます。

要件

要件タイプ 要件
ヘッダー Fltkernel.h (Fltkernel.h を含む)

関連項目

FLT_CALLBACK_DATA

FLT_IO_PARAMETER_BLOCK

FLT_IS_FASTIO_OPERATION

FLT_IS_FS_FILTER_OPERATION

FLT_IS_IRP_OPERATION

FLT_PARAMETERS

FltReadFile

IRP_MJ_READ

ZwReadFile