ccMdlWriteComplete 函数 (ntifs.h)

CcMdlWriteComplete 例程释放内存描述符列表 (由 CcPrepareMdlWrite 为缓存文件创建的 MDL) 。

语法

void CcMdlWriteComplete(
  [in] PFILE_OBJECT   FileObject,
  [in] PLARGE_INTEGER FileOffset,
  [in] PMDL           MdlChain
);

参数

[in] FileObject

传递给 CcPrepareMdlWrite 的文件对象指针。

[in] FileOffset

传递给 CcPrepareMdlWriteFileOffset 的值。

[in] MdlChain

CcPrepareMdlWrite 返回的 MDL 链的地址。

返回值

备注

文件系统调用 CcMdlWriteComplete 以释放由 CcPrepareMdlWrite 为缓存文件创建的内存描述符列表 (MDL) ,并将指定的字节范围标记为写入。 锁定的所有物理页面均已解锁。 已映射的任何页面均未映射。

如果在 FileObject 参数指向的文件对象上设置了FO_WRITE_THROUGH标志,则会立即将文件数据刷新到磁盘。 此刷新操作会重新进入文件系统,如果刷新操作失败,可能会导致 CcMdlWriteComplete 引发异常。 在这种情况下,MDL 尚未释放,调用方可以重新尝试该操作。

成功为IRP_MN_COMPLETE操作调用 CcMdlWriteComplete 后,调用方必须将 IRP 的 MdlAddress 字段设置为 NULL

在使用 CcMdlWriteComplete 之前,强烈建议文件系统开发人员研究在 FASTFAT 示例中使用此例程的方式。

每次调用 CcPrepareMdlWrite 后,都必须调用 CcMdlWriteCompleteCcMdlWriteAbort

要求

要求
目标平台 通用
标头 ntifs.h (包括 Ntifs.h)
Library NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL

另请参阅

CcMdlWriteAbort

CcPrepareMdlWrite