Share via


FltFastIoMdlRead 関数 (fltkernel.h)

FltFastIoMdlRead ルーチンは、ファイル キャッシュ内の指定されたバイト範囲を直接指すメモリ記述子リスト (MDL) を返します。

構文

BOOLEAN FLTAPI FltFastIoMdlRead(
        PFLT_INSTANCE    InitiatingInstance,
  [in]  PFILE_OBJECT     FileObject,
  [in]  PLARGE_INTEGER   FileOffset,
  [in]  ULONG            Length,
  [in]  ULONG            LockKey,
  [out] PMDL             *MdlChain,
  [out] PIO_STATUS_BLOCK IoStatus
);

パラメーター

InitiatingInstance

呼び出し元の不透明なインスタンス ポインター。 このパラメーターは必須であり、 NULL にすることはできません。

[in] FileObject

キャッシュされたファイルのファイル オブジェクトへのポインター。

[in] FileOffset

データを保持するキャッシュ ファイル内の開始バイト オフセットを指定する変数へのポインター。

[in] Length

キャッシュから読み取るデータの長さ (バイト単位)。

[in] LockKey

ロックするバイト範囲に関連付けられている値。 ロックする範囲が、既にロックされている別の範囲と非排他的ロックで重なっている場合、または読み取る範囲が、排他的にロックされていない別の範囲のサブ範囲である場合、このパラメーターの値は、その非排他的ロックのキーである必要がありますロックは、呼び出し元スレッドの親プロセスによって保持されている必要があります。 それ以外の場合、このパラメーターは無効です。

[out] MdlChain

出力時に、メモリ記述子リスト (MDL) のリンクされたリストへのポインター。

[out] IoStatus

出力時に転送の状態を含む IO_STATUS_BLOCK 構造体へのポインター。 操作が成功した場合、 IoStatus.Status は STATUS_SUCCESS に設定されます。 それ以外の場合は、適切な NTSTATUS エラー コードに設定されます。 IoStatus.Information は、ルーチンが正常にロックされた実際のバイト数に設定されます。

戻り値

FltFastIoMdlRead ルーチンは、操作が成功した場合は TRUE、操作が失敗した場合は FALSE を返します。

注釈

FltFastIoMdlRead ルーチンは、通常の IRP メカニズムをバイパスし、呼び出し元がキャッシュされたファイル データに直接アクセスするために使用できるメモリ記述子リスト (MDL) のリンクされたリストを返します。 この操作はデータのコピーやバッファー処理を行わないため、通常の読み取りよりもはるかに高速です。

ルーチンは 、CcMdlRead および FsRtlMdlReadDev に似ています。 FltFastIoMdlReadCcMdlReadFsRtlMdlReadDev は、キャッシュされたファイル データを含むページをロックして、システムがこれらのページをページ ファイルにスワップしないようにします。 呼び出し元が FltFastIoMdlReadComplete ルーチンを呼び出すまで、ページはメモリ内でロックされたままになります。

要件

要件
対象プラットフォーム ユニバーサル
Header fltkernel.h (Ntifs.h を含む)
Library NtosKrnl.lib
[DLL] NtosKrnl.exe
IRQL <= APC_LEVEL

こちらもご覧ください

CcMdlRead

FltFastIoMdlReadComplete

FsRtlMdlReadDev