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

Процедура CcCoherencyFlushAndPurgeCache выполняет очистку или очистку кэша, чтобы обеспечить когерентность кэша.

Синтаксис

void CcCoherencyFlushAndPurgeCache(
  [in]           PSECTION_OBJECT_POINTERS SectionObjectPointer,
  [in, optional] PLARGE_INTEGER           FileOffset,
  [in]           ULONG                    Length,
  [out]          PIO_STATUS_BLOCK         IoStatus,
  [in, optional] ULONG                    Flags
);

Параметры

[in] SectionObjectPointer

Указатель на структуру SECTION_OBJECT_POINTERS , содержащую указатели на объект section объекта файла.

[in, optional] FileOffset

Указатель на переменную, указывающую смещение начального байта для очистки или очистки.

[in] Length

Длина данных для очистки или очистки в байтах, начиная с FileOffset. Этот параметр игнорируется, если в FileOffset передается указатель NULL.

[out] IoStatus

Указатель на структуру, выделенную вызывающим объектом IO_STATUS_BLOCK , которая получает окончательное состояние завершения и сведения об операции.

[in, optional] Flags

Битовая маска следующих флагов, указывающих способ выполнения операции:

Значение Значение
CC_FLUSH_AND_PURGE_NO_PURGE Очистка, но не очистка кэша. Это полезно для операций очистки при совместном чтении.
CC_FLUSH_AND_PURGE_GATHER_DIRTY_BITS Зарезервировано для использования системой; не использовать.
CC_FLUSH_AND_PURGE_WRITEABLE_VIEWS_NOTSEEN Вызывающий объект может установить этот флаг, если нет сопоставлений с файлом за пределами диспетчера кэша, чтобы пропустить дорогостоящую операцию обрезки рабочих наборов процесса.

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

None

Remarks

Используйте CcCoherencyFlushAndPurgeCache , когда это возможно, вместо явной очистки и последовательности вызовов очистки, так как это приведет к аннулированию сопоставленных пользователем представлений во избежание повреждения данных. CcCoherencyFlushAndPurgeCache обеспечивает когерентность кэша; Таким образом, невозможно выполнить очистку только с помощью этой функции.

Файл необходимо получить исключительно перед вызовом CcCoherencyFlushAndPurgeCache.

Вы можете очистить или очистить любой диапазон байтов в файле с помощью параметров FileOffset и Length . Кроме того, можно выполнить очистку или очистку всего файла при передаче указателя NULL в параметр FileOffset .

Вызов CcCoherencyFlushAndPurgeCache — это синхронная (блокирующая) операция, а не асинхронная (неблокирующая).

Значение IoStatus-Status> STATUS_CACHE_PAGE_LOCKED указывает, что не удалось сделать страницу недействительной. Имейте в виду, что недействительность страницы может завершиться ошибкой, даже если передать CC_FLUSH_AND_PURGE_NO_PURGE в параметре Flags . Обратите внимание, что STATUS_CACHE_PAGE_LOCKED является состоянием успешного выполнения (то есть при тестировании с помощью макроса NT_SUCCESS возвращается значение TRUE).

Требования

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

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

CcFlushCache

CcPurgeCacheSection