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


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

Подпрограмма CcCanIWrite определяет, может ли вызывающий объект выполнять запись в кэшированный файл.

Синтаксис

BOOLEAN CcCanIWrite(
  [in] PFILE_OBJECT FileObject,
  [in] ULONG        BytesToWrite,
  [in] BOOLEAN      Wait,
  [in] UCHAR        Retrying
);

Параметры

[in] FileObject

Указатель на объект файла для кэшированного файла.

[in] BytesToWrite

Число записываемых байтов.

[in] Wait

Задайте значение TRUE, если вызывающий объект может быть переведен в состояние ожидания до тех пор, пока он не сможет выполнить запись в кэшированный файл. В противном случае — FALSE.

[in] Retrying

Задайте значение FALSE, если ccCanIWrite вызывается для этого запроса на запись впервые. В противном случае — ЗНАЧЕНИЕ TRUE.

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

CcCanIWrite возвращает значение TRUE, если диспетчер кэша может принять запрос на запись. В противном случае — FALSE.

Комментарии

CcCanIWrite следует вызывать перед вызовом CcCopyWrite или CcFastCopyWrite.

Если CcCanIWrite возвращает значение TRUE, вызывающий объект может немедленно вызвать CcCopyWrite или CcFastCopyWrite.

Если CcCanIWrite возвращает значение FALSE, вызывающий объект должен вместо этого вызвать CcDeferWrite , чтобы отложить запрос на запись.

В общем случае диспетчер кэша может принять запрос на запись, если выполняются следующие условия:

  • Объем записываемых данных не слишком велик.

  • Для выполнения операции записи достаточно памяти.

  • Количество грязное страниц в системном кэше не превышает пороговое значение грязное страницы (CcDirtyPageThreshold).

  • Если для этого файла существует пороговое значение грязное страницы для каждого файла, оно не превышается на количество грязное страниц для этого файла в системном кэше.

Чтобы кэшировать файл, используйте CcInitializeCacheMap.

Требования

Требование Значение
Целевая платформа Универсальное
Верхняя часть ntifs.h (включая Ntifs.h)
Библиотека NtosKrnl.lib
DLL NtosKrnl.exe

См. также раздел

CcCopyWrite

CcDeferWrite

CcFastCopyWrite

CcInitializeCacheMap

CcSetDirtyPageThreshold