FsRtlPrepareMdlWriteEx 関数 (ntifs.h)
FsRtlPrepareMdlWriteEx ルーチンは、キャッシュされたファイル データの指定範囲を指すメモリ記述子リスト (MDL) のリンクされたリストを返して、キャッシュに直接データを書き込みます。 書き込みのキャッシュ サポートが利用できない場合、ルーチンは IRP ベースの MDL 書き込み操作に戻ります。
構文
NTSTATUS FsRtlPrepareMdlWriteEx(
[in] PFILE_OBJECT FileObject,
[in] PLARGE_INTEGER FileOffset,
[in] ULONG Length,
[in] ULONG LockKey,
[out] PMDL *MdlChain,
[out] PIO_STATUS_BLOCK IoStatus
);
パラメーター
[in] FileObject
ファイル オブジェクトへのポインター。
[in] FileOffset
データを保持するキャッシュ内の開始バイト オフセットを指定する値へのポインター。
[in] Length
キャッシュに書き込むデータの長さ (バイト単位)。
[in] LockKey
ロックするバイト範囲に関連付けられている値。 ロックする範囲が、既にロックされている別の範囲と非決定的ロックで重なっている場合、または読み取る範囲が、既に非決定的にロックされている別の範囲のサブ範囲である場合は、このパラメーターの値がその非決定的ロックのキーである必要があります。 ロックは、呼び出し元スレッドの親プロセスによって保持されている必要があります。 それ以外の場合、このパラメーターは無効です。
[out] MdlChain
出力時に、キャッシュされたデータ内のバイト範囲を指すメモリ記述子リスト (MDL) のリンクされたリストへのポインター。
[out] IoStatus
出力時に転送の状態を格納する IO_STATUS_BLOCK 構造体へのポインター。 操作が成功した場合、IoStatus.Status
戻り値
FsRtlPrepareMdlWriteEx
リターン コード | 形容 |
---|---|
|
IRP ベースの書き込み用の IRP を割り当てませんでした。 |
備考
ファイル システムで高速 I/O が使用可能な場合、FsRtlPrepareMdlWriteEx ルーチンは通常の IRP 書き込みメカニズムをバイパスし、呼び出し元がファイル キャッシュに直接データを書き込むのに使用できるメモリ記述子リスト (MDL) のリンクされたリストを返します。 バッファーに格納されたデータをキャッシュにコピーする代わりに、呼び出し元が上書きする物理ページはメモリ内でロックされ、直接書き込むことができます。 FsRtlPrepareMdlWriteEx
高速 I/O が有効になっていない場合、FsRtlPrepareMdlWriteEx
MDL が指すページはメモリ内でロックされますが、システム空間にはマップされません。 呼び出し元は、mmGetSystemAddressForMdlSafe
FsRtlPrepareMdlWriteEx
必要条件
要件 | 価値 |
---|---|
ターゲット プラットフォーム の |
万国 |
ヘッダー | ntifs.h (Ntifs.h を含む) |
ライブラリ | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
関連項目
ccMdlWriteComplete を
ccPrepareMdlWrite の
mmGetSystemAddressForMdlSafe の