Функция CcDeferWrite (ntifs.h)
Программа CcDeferWrite откладывает запись в кэшированный файл. Подпрограмма после отправки вызывается диспетчером кэша, когда он может разместить операцию записи.
Синтаксис
void CcDeferWrite(
[in] PFILE_OBJECT FileObject,
[in] PCC_POST_DEFERRED_WRITE PostRoutine,
[in] PVOID Context1,
[in] PVOID Context2,
[in] ULONG BytesToWrite,
[in] BOOLEAN Retrying
);
Параметры
[in] FileObject
Указатель на объект файла для кэшированного файла, в который записываются данные.
[in] PostRoutine
Адрес подпрограммы для диспетчера кэша для вызова записи в кэшированный файл. Обратите внимание, что эта подпрограмма будет вызываться немедленно, даже если CcCanIWrite только что вернул FALSE.
Подпрограмма post определяется в ntifs.h как:
typedef
VOID (*PCC_POST_DEFERRED_WRITE) (
_In_ PVOID Context1,
_In_ PVOID Context2
);
Эту функцию можно вызвать с помощью поля TopLevelIrp в текущем наборе IRP, для FSRTL_MOD_WRITE_TOP_LEVEL_IRP.
[in] Context1
Первый параметр для подпрограммы после PostRoutine.
[in] Context2
Второй параметр для подпрограммы после PostRoutine.
[in] BytesToWrite
Количество байтов записываемых данных.
[in] Retrying
Установите значение FALSE, если запрос публикуется в первый раз, TRUE в противном случае.
Возвращаемое значение
Никакой
Замечания
Файловая система обычно вызывает CcDeferWrite после получения возвращаемого значения FALSE из CcCanIWrite.
Чтобы кэшировать файл, используйте CcInitializeCacheMap.
Параметры контекста, передаваемые PostRoutine обычно являются запросом ввода-вывода и связанными данными контекста.
Требования
Требование | Ценность |
---|---|
целевая платформа | Всеобщий |
заголовка | ntifs.h (include Ntifs.h) |
библиотеки |
NtosKrnl.lib |
DLL | NtosKrnl.exe |