Функция 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, разработчикам файловой системы настоятельно рекомендуется изучить способ использования этой процедуры в примере FASTFAT.
За каждым вызовом CcPrepareMdlWrite должен следовать вызов CcMdlWriteComplete или CcMdlWriteAbort.
Требования
Требование | Ценность |
---|---|
целевая платформа | Всеобщий |
заголовка | ntifs.h (include Ntifs.h) |
библиотеки |
NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |