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