CcMdlWriteComplete 関数 (ntifs.h)
CcMdlWriteComplete ルーチンは、キャッシュされたファイルの CcPrepareMdlWrite によって作成されたメモリ記述子リスト (MDL) を解放します。
構文
void CcMdlWriteComplete(
[in] PFILE_OBJECT FileObject,
[in] PLARGE_INTEGER FileOffset,
[in] PMDL MdlChain
);
パラメーター
[in] FileObject
CcPrepareMdlWrite に渡されたファイル オブジェクト ポインター。
[in] FileOffset
CcPrepareMdlWrite に渡された FileOffset の値。
[in] MdlChain
CcPrepareMdlWrite によって返される MDL チェーンのアドレス。
戻り値
なし
解説
ファイル システムは CcMdlWriteComplete を呼び出して、キャッシュされたファイルの CcPrepareMdlWrite によって作成されたメモリ記述子リスト (MDL) を解放し、指定されたバイト範囲を書き込み用にマークします。 ロックダウンされたすべての物理ページのロックが解除されます。 マップされたページはすべてマップ解除されます。
FileObject パラメーターが指すファイル オブジェクトにFO_WRITE_THROUGH フラグが設定されている場合、ファイル データはすぐにディスクにフラッシュされます。 このフラッシュ操作によってファイル システムが再入力され、フラッシュ操作が失敗した場合に CcMdlWriteComplete で例外が発生する可能性があります。 この場合、MDL は解放されておらず、呼び出し元は操作を再試行できます。
IRP_MN_COMPLETE操作に対して CcMdlWriteComplete が正常に呼び出された後、呼び出し元は IRP の MdlAddress フィールドを NULL に設定する必要があります。
CcMdlWriteComplete を使用する前に、ファイル システム開発者は FASTFAT サンプルでこのルーチンを使用する方法を検討することを強くお勧めします。
CcPrepareMdlWrite の各呼び出しの後に、CcMdlWriteComplete または CcMdlWriteAbort を呼び出す必要があります。
要件
要件 | 値 |
---|---|
対象プラットフォーム | ユニバーサル |
Header | ntifs.h (Ntifs.h を含む) |
Library | NtosKrnl.lib |
[DLL] | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |