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