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


Функция 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 Native System Services могут вести себя по-разному так, как они обрабатывают и интерпретируют входные параметры. Дополнительные сведения о связях между подпрограммами **Nt*Xxx** и **Zw*Xxx*** подпрограммы см. в разделе [Использование программ собственных системных служб с использованием nt и Zw](/windows-hardware/drivers/kernel/using-nt-and-zw-versions-of-native-system-services-routines).

Требования

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

См. также

FltFlushBuffers

IRP_MJ_FLUSH_BUFFERS

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

ZwCreateFile

ZwOpenFile