Поделиться через


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

Подпрограмма CcMdlWriteComplete освобождает списки дескрипторов памяти , созданные 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.

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

Никакой

Замечания

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

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

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

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

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

Требования

Требование Ценность
целевая платформа Всеобщий
заголовка ntifs.h (include Ntifs.h)
библиотеки NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL

См. также

CcMdlWriteAbort

CcPrepareMdlWrite