次の方法で共有


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

こちらもご覧ください

CcMdlWriteAbort

CcPrepareMdlWrite