Функция 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 |