Функция NtFlushBuffersFileEx (ntifs.h)

Подпрограмма NtFlushBuffersFileEx отправляет запрос на очистку заданного файла в файловую систему. Необязательный флаг операции очистки можно задать для управления записью данных файла в хранилище.

Синтаксис

__kernel_entry NTSYSCALLAPI NTSTATUS NtFlushBuffersFileEx(
  [in]  HANDLE           FileHandle,
  [in]  ULONG            Flags,
  [in]  PVOID            Parameters,
  [in]  ULONG            ParametersSize,
  [out] PIO_STATUS_BLOCK IoStatusBlock
);

Параметры

[in] FileHandle

Дескриптор, возвращаемый NtCreateFile или NtOpenFile для файла, буферы которого будут промыты. Этот параметр является обязательным и не может иметь значение NULL.

[in] Flags

Флаги операций очистки. Флаги могут быть одним из следующих значений:

Ценность Значение
0 (обычный) Данные файлов и метаданные в кэше файлов записываются, а базовое хранилище синхронизируется с очисткой кэша. Поддерживаемые файловые системы Windows: NTFS, ReFS, FAT, exFAT.
FLUSH_FLAGS_FILE_DATA_ONLY Данные файлов в кэше файлов записываются. Метаданные не записываются, а базовое хранилище не синхронизировано для очистки кэша. Этот флаг недопустим с дескрипторами томов. Поддерживаемые файловые системы Windows: NTFS, FAT, exFAT.
FLUSH_FLAGS_NO_SYNC Данные файлов и метаданные в кэше файлов записываются. Базовое хранилище не синхронизировано для очистки кэша. Этот флаг недопустим с дескрипторами томов. Поддерживаемые файловые системы Windows: NTFS, FAT, exFAT.
FLUSH_FLAGS_FILE_DATA_SYNC_ONLY Данные из заданного файла будут записаны из кэша в памяти Windows. Только метаданные, необходимые для извлечения данных, будут промыты (обновление метки времени будет пропущено как можно больше). Базовое хранилище синхронизировано для очистки кэша. Этот флаг недопустим с дескрипторами томов или каталогов. Поддерживаемые файловые системы Windows: NTFS.

[in] Parameters

Указатель на блок с дополнительными параметрами. В настоящее время этот параметр должен иметь значение NULL.

[in] ParametersSize

Размер блока, на который параметры указывает. В настоящее время этот параметр должен иметь значение 0.

[out] IoStatusBlock

Адрес блока состояния ввода-вывода вызывающего объекта. Этот параметр является обязательным и не может иметь значение NULL.

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

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

Возвращаемый код Описание
STATUS_MEDIA_WRITE_PROTECTED Файл находится на томе, защищенном записью; это код ошибки.
STATUS_VOLUME_DISMOUNTED Файл находится на томе, который в настоящее время не подключен; это код ошибки.
STATUS_ACCESS_DENIED Файл не имеет доступа к записи или добавлению.

Замечания

Драйверы минифильтра должны вызывать FltFlushBuffers2 вместо вызова NtFlushBuffersFileEx.

Устаревший драйвер фильтра файловой системы может вызывать NtFlushBuffersFileEx для выдачи запроса IRP_MJ_FLUSH_BUFFERS файловой системе для заданного файла. Операция очистки синхронна.

Вызывающие NtFlushBuffersFileEx должны выполняться в IRQL = PASSIVE_LEVEL и со специальными API-интерфейсами ядра, включенными.

Для вызовов драйверов в режиме ядра NtXxx и ZwXxx версии подпрограммы Windows Native System Services могут вести себя по-разному в том, как они обрабатывают и интерпретируют входные параметры. Дополнительные сведения о связи между NtXxx и ZwXxx версиями подпрограммы см. в разделе Using Nt and Zw Versions of the Native System Services Routines.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows 8
целевая платформа Всеобщий
заголовка ntifs.h (include Ntifs.h)
библиотеки NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL (см. раздел "Примечания".)

См. также

FltFlushBuffers2

IRP_MJ_FLUSH_BUFFERS

использование версий собственных системных служб и Zw

NtCreateFile

NtOpenFile