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

См. также

CcCanIWrite

CcInitializeCacheMap

CcSetDirtyPageThreshold