Функция FltFlushBuffers2 (fltkernel.h)

Драйвер минифильтра вызывает FltFlushBuffers2 для отправки запроса на очистку в файловую систему для данного файла.

Синтаксис

NTSTATUS FLTAPI FltFlushBuffers2(
  PFLT_INSTANCE      Instance,
  PFILE_OBJECT       FileObject,
  ULONG              FlushType,
  PFLT_CALLBACK_DATA CallbackData
);

Параметры

Instance

[in] Указатель непрозрачного экземпляра для вызывающего экземпляра драйвера минифильтра. Этот параметр является обязательным и не может иметь значение NULL.

FileObject

[in] Указатель файлового объекта для файла или тома для очистки. Этот параметр является обязательным и не может иметь значение NULL.

FlushType

[in] Указывает тип очистки, который файловая система должна выполнить для файла. FlushType может иметь один из следующих вариантов:

Значение операции FlushType Описание
0 Если FileObject предназначен для файла, будут записаны данные файла и метаданные в файловом кэше, а базовое хранилище будет синхронизировано для очистки кэша. Если FileObject предназначен для тома, файловая система приведет к записи данных файла и метаданных для всех измененных файлов на томе, а базовое хранилище будет синхронизировано для очистки кэша. Эта операция эквивалентна FltFlushBuffers.
FLT_FLUSH_TYPE_FLUSH_AND_PURGE Аналогично 0 (FltFlushBuffers), за исключением того, что кэш также очищается после завершения очистки.
FLT_FLUSH_TYPE_FILE_DATA_ONLY Если файл находится в файловой системе NTFS, будут записаны только данные файлов в файловом кэше. Метаданные не записываются, и базовое хранилище не синхронизируется для очистки кэша. Этот флаг недопустим, если FileObject предназначен для тома.
FLT_FLUSH_TYPE_NO_SYNC Если файл находится в файловой системе NTFS, данные файла и метаданные в файловом кэше будут записаны. Базовое хранилище не будет синхронизировано для очистки кэша. Этот флаг недопустим, если FileObject предназначен для тома.
FLT_FLUSH_TYPE_DATA_SYNC_ONLY Если файл находится в файловой системе NTFS, данные файлов в файловом кэше будут записаны. Метаданные не записываются. Базовое хранилище синхронизируется для очистки кэша. Этот флаг недопустим, если FileObject предназначен для тома или каталога.

CallbackData

[in/optional] Указатель на необязательную FLT_CALLBACK_DATA структуру, используемую для распространения расширения IRP вызывающей стороны. См . статью FltPropagateIrpExtension.

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

FltFlushBuffers2 возвращает STATUS_SUCCESS или соответствующее значение NTSTATUS, например одно из следующих значений:

Код возврата Описание
STATUS_MEDIA_WRITE_PROTECTED Файл находится на томе, защищенном для записи. Это код ошибки.
STATUS_VOLUME_DISMOUNTED Файл находится на томе, который в настоящее время не подключен. Это код ошибки.

Комментарии

Драйвер минифильтра может вызвать FltFlushBuffers2 , чтобы отправить IRP_MJ_FLUSH_BUFFERS запрос к файловой системе для заданного файла. Операция очистки является синхронной и выдается экземплярам под указанным экземпляром.

Если файл находится в файловой системе NTFS, мини-фильтр может управлять типом очистки с помощью параметра FlushType .

Требования

Требование Значение
Минимальная версия клиента Windows 10 версии 1903
Верхняя часть fltkernel.h

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

FltFlushBuffers

FltPropagateIrpExtension

IRP_MJ_FLUSH_BUFFERS