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