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


Функция 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 могут вести себя по-разному, так как они обрабатывают и интерпретируют входные параметры. Дополнительные сведения о связи между версиями подпрограмм NtXxx и ZwXxx см. в разделе Использование версий NT и Zw подпрограмм собственных системных служб.

Требования

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

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

FltFlushBuffers2

IRP_MJ_FLUSH_BUFFERS

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

NtCreateFile

NtOpenFile