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

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

Синтаксис

NTSYSAPI NTSTATUS ZwFlushBuffersFileEx(
  [in]  HANDLE           FileHandle,
        ULONG            FLags,
        PVOID            Parameters,
        ULONG            ParametersSize,
  [out] PIO_STATUS_BLOCK IoStatusBlock
);

Параметры

[in] FileHandle

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

FLags

Сброс флагов операций. Флаги могут иметь значение 0 или одно из следующих значений.

Значение Значение
FLUSH_FLAGS_FILE_DATA_ONLY

Если файл находится в файловой системе NTFS, данные файлов в файловом кэше будут записаны. Метаданные не записываются, а базовое хранилище не синхронизируется для очистки кэша. Этот флаг недопустим для дескрипторов тома.

FLUSH_FLAGS_NO_SYNC

Если файл находится в файловой системе NTFS, будут записаны файловые данные и метаданные в файловом кэше. Базовое хранилище не синхронизировано для очистки кэша. Этот флаг недопустим для дескрипторов тома.

 

Parameters

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

ParametersSize

Размер блока параметров (в байтах).

[out] IoStatusBlock

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

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

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

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

Комментарии

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

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

Вызывающие серверы ZwFlushBuffersFileEx должны выполняться в СРЕДЕ IRQL = PASSIVE_LEVEL и с включенными специальными api ядра.

Примечание Если вызов функции ZwFlushBuffersFileEx выполняется в пользовательском режиме, следует использовать имя "NtFlushBuffersFileEx" вместо "ZwFlushBuffersFileEx".
 
Для вызовов из драйверов режима ядра версии **Nt*Xxx*** и **Zw*Xxx*** подпрограммы собственных систем Windows могут вести себя по-разному, обрабатывая и интерпретируемые входные параметры. Дополнительные сведения о связи между версиями подпрограмм **Nt*Xxx*** и **Zw*Xxx*** см. в разделе [Использование версий nt и Zw собственных системных служб](/windows-hardware/drivers/kernel/using-nt-and-zw-versions-of-native-system-services-routines).

Требования

Требование Значение
Минимальная версия клиента Windows 8
Целевая платформа Универсальное
Верхняя часть ntifs.h (включая Ntifs.h)
Библиотека NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL (см. раздел "Примечания")

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

FltFlushBuffers

IRP_MJ_FLUSH_BUFFERS

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

ZwCreateFile

ZwOpenFile