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


Функция 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/необязательный] Указатель на необязательную 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