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。
要求
要求 | 价值 |
---|---|
目标平台 | 普遍 |
标头 | ntifs.h (include Ntifs.h) |
库 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |