Função NtFlushBuffersFileEx (ntifs.h)

A rotina NtFlushBuffersFileEx envia uma solicitação de liberação para um determinado arquivo para o sistema de arquivos. Um sinalizador de operação de liberação opcional pode ser definido para controlar como os dados do arquivo são gravados no armazenamento.

Sintaxe

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

Parâmetros

[in] FileHandle

Identificador retornado por NtCreateFile ou NtOpenFile para o arquivo cujos buffers serão liberados. Esse parâmetro é necessário e não pode ser NULL.

[in] Flags

Sinalizadores de operação de liberação. Os sinalizadores podem ser um dos seguintes valores:

Valor Significado
0 (normal) Os dados de arquivo e os metadados no cache de arquivos serão gravados e o armazenamento subjacente será sincronizado para liberar seu cache. Sistemas de arquivos do Windows com suporte: NTFS, ReFS, FAT e exFAT.
FLUSH_FLAGS_FILE_DATA_ONLY Os dados do arquivo no cache de arquivos serão gravados. Nenhum metadado é gravado e o armazenamento subjacente não é sincronizado para liberar seu cache. Esse sinalizador não é válido com identificadores de volume. Sistemas de arquivos do Windows com suporte: NTFS, FAT, exFAT.
FLUSH_FLAGS_NO_SYNC Os dados de arquivo e os metadados no cache de arquivos serão gravados. O armazenamento subjacente não é sincronizado para liberar seu cache. Esse sinalizador não é válido com identificadores de volume. Sistemas de arquivos do Windows com suporte: NTFS, FAT, exFAT.
FLUSH_FLAGS_FILE_DATA_SYNC_ONLY Os dados do arquivo especificado serão gravados no cache na memória do Windows. Somente os metadados necessários para a recuperação de dados serão liberados (a atualização do carimbo de data/hora será ignorada o máximo possível). O armazenamento subjacente é sincronizado para liberar seu cache. Esse sinalizador não é válido com identificadores de volume ou diretório. Sistemas de arquivos do Windows com suporte: NTFS.

[in] Parameters

Ponteiro para um bloco com parâmetros adicionais. No momento, esse parâmetro deve ser definido como NULL.

[in] ParametersSize

O tamanho, em bytes, do bloco para o qual os Parâmetros apontam. No momento, esse parâmetro deve ser definido como 0.

[out] IoStatusBlock

Endereço do bloco de status de E/S do chamador. Esse parâmetro é necessário e não pode ser NULL.

Retornar valor

NtFlushBuffersFileEx retorna STATUS_SUCCESS ou um valor NTSTATUS apropriado, como um dos seguintes:

Código de retorno Descrição
STATUS_MEDIA_WRITE_PROTECTED O arquivo reside em um volume protegido por gravação; este é um código de erro.
STATUS_VOLUME_DISMOUNTED O arquivo reside em um volume que não está montado no momento; este é um código de erro.
STATUS_ACCESS_DENIED O arquivo não tem acesso de gravação ou acréscimo.

Comentários

Os drivers de minifiltro devem chamar FltFlushBuffers2 em vez de chamar NtFlushBuffersFileEx.

Um driver de filtro do sistema de arquivos herdado pode chamar NtFlushBuffersFileEx para emitir uma solicitação de IRP_MJ_FLUSH_BUFFERS ao sistema de arquivos para um determinado arquivo. A operação de liberação é síncrona.

Os chamadores de NtFlushBuffersFileEx devem estar em execução em IRQL = PASSIVE_LEVEL e com APCs de kernel especiais habilitadas.

Para chamadas de drivers de modo kernel, as versões NtXxx e ZwXxx de uma rotina do Windows Native System Services podem se comportar de forma diferente na maneira como lidam e interpretam parâmetros de entrada. Para obter mais informações sobre a relação entre as versões NtXxx e ZwXxx de uma rotina, consulte Using Nt and Zw Versions of the Native System Services Routines.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 8
Plataforma de Destino Universal
Cabeçalho ntifs.h (inclua Ntifs.h)
Biblioteca NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL (consulte a seção Comentários.)

Confira também

FltFlushBuffers2

IRP_MJ_FLUSH_BUFFERS

Usando versões Nt e Zw das rotinas de serviços do sistema nativo

NtCreateFile

NtOpenFile