Функция CcMdlWriteComplete (ntifs.h)

Подпрограмма CcMdlWriteComplete освобождает списки дескрипторов памяти (MDL), созданные CcPrepareMdlWrite для кэшированного файла.

Синтаксис

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

Параметры

[in] FileObject

Указатель на объект файла, переданный в CcPrepareMdlWrite.

[in] FileOffset

Значение FileOffset , переданное в CcPrepareMdlWrite.

[in] MdlChain

Адрес цепочки MDL, возвращенной CcPrepareMdlWrite.

Возвращаемое значение

None

Remarks

Файловые системы вызывают CcMdlWriteComplete , чтобы освободить списки дескрипторов памяти (MDL), созданные CcPrepareMdlWrite для кэшированного файла, и отметить указанный диапазон байтов для записи. Все физические страницы, которые были заблокированы, разблокируются. Все сопоставленные страницы не сопоставлены.

Если флаг FO_WRITE_THROUGH установлен для объекта file, на который указывает параметр FileObject , данные файла немедленно сбрасываются на диск. Эта операция очистки повторно входит в файловую систему и может привести к тому, что CcMdlWriteComplete вызовет исключение в случае сбоя операции очистки. В этом случае MDL не был освобожден, и вызывающий объект может повторить операцию.

После успешного вызова CcMdlWriteComplete для операции IRP_MN_COMPLETE вызывающий объект должен задать для поля MdlAddress IRP значение NULL.

Перед использованием CcMdlWriteComplete разработчикам файловых систем настоятельно рекомендуется изучить способ использования этой процедуры в примере FASTFAT.

За каждым вызовом CcPrepareMdlWrite должен следовать вызов CcMdlWriteComplete или CcMdlWriteAbort.

Требования

Требование Значение
Целевая платформа Универсальное
Верхняя часть ntifs.h (включая Ntifs.h)
Библиотека NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL

См. также раздел

CcMdlWriteAbort

CcPrepareMdlWrite