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