IRP_MJ_WRITE 共用体の FLT_PARAMETERS
次の共用体コンポーネントは、操作における FLT_IO_PARAMETER_BLOCK 構造体の MajorFunction フィールドが IRP_MJ_WRITE であるときに使用されます。
構文
typedef union _FLT_PARAMETERS {
... ;
struct {
ULONG Length;
ULONG Key;
LARGE_INTEGER ByteOffset;
PVOID WriteBuffer;
PMDL MdlAddress;
} Write;
... ;
} FLT_PARAMETERS, *PFLT_PARAMETERS;
メンバー
Write: 次のメンバーが含まれる構造体。
Length: 書き込まれるデータの長さ (バイト単位)。
Key: ターゲット ファイルのバイト範囲ロックに関連付けられているキー値。
ByteOffset: 書き込まれるデータのファイル内の開始バイト オフセット。
WriteBuffer: ファイルに書き込まれるデータを含むバッファーへのポインター。 このメンバーは省略可能であり、MdlAddress で MDL が指定されている場合は NULL にすることができます。 「解説」を参照してください。
MdlAddress: WriteBuffer メンバーが指すバッファーを記述するメモリ記述子リスト (MDL) のアドレス。 このメンバーは省略可能であり、WriteBuffer でバッファーが指定されている場合は NULL にすることができます。 「解説」を参照してください。
解説
IRP_MJ_WRITE 操作における FLT_PARAMETERS 構造体には、コールバックデータ (FLT_CALLBACK_DATA) 構造体が表す書き込み操作用のパラメーターが含まれます。 これは、FLT_IO_PARAMETER_BLOCK 構造体に含まれています。
WriteBuffer バッファーと MdlAddress バッファーの両方が指定されている場合は、ミニフィルターで MDL を使用することをお勧めします。 WriteBuffer が指すメモリは、呼び出し元プロセスのコンテキスト内でアクセスされるユーザー モード アドレスである場合、またはカーネル モード アドレスである場合に有効です。
ミニフィルターが MdlAddress の値を変更した場合、操作後のコールバックの後、フィルター マネージャーは現在 MdlAddress に格納されている MDL を解放し、MdlAddress の以前の値を復元します。
IRP_MN_COMPLETE ビットが Iopb-MinorFunction> で設定されている場合、MdlAddress は CcMdlReadComplete に送信するアドレスです。
Iopb-MinorFunction> でIRP_MN_MDL ビット (IRP_MN_COMPLETE ビットではなく) が設定されている場合、MdlAddress は CcPrepareMdlWrite に送信するアドレスです。
IRP_MJ_WRITE には、IRP ベースの操作または高速 I/O 操作を指定できます。
要件
要件タイプ | 要件 |
---|---|
ヘッダー | Fltkernel.h (Fltkernel.h を含む) |