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 (include Ntifs.h)
NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL

另请参阅

CcMdlWriteAbort

CcPrepareMdlWrite