Função ZwFlushBuffersFileEx (ntifs.h)

A rotina ZwFlushBuffersFileEx é chamada por um driver de filtro do sistema de arquivos para enviar 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 de arquivo são gravados no armazenamento.

Sintaxe

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

Parâmetros

[in] FileHandle

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

FLags

Liberar sinalizadores de operação. Os sinalizadores podem ser 0 ou um dos valores a seguir.

Valor Significado
FLUSH_FLAGS_FILE_DATA_ONLY

Se o arquivo estiver em um sistema de arquivos NTFS, os dados de 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.

FLUSH_FLAGS_NO_SYNC

Se o arquivo estiver em um sistema de arquivos NTFS, 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.

 

Parameters

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

ParametersSize

O tamanho, em bytes, do bloco de parâmetros.

[out] IoStatusBlock

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

Retornar valor

ZwFlushBuffersFileEx 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

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

Os drivers de minifiltro devem chamar FltFlushBuffers em vez de chamar ZwFlushBuffersFileEx.

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

Nota Se a chamada para a função ZwFlushBuffersFileEx ocorrer no modo de usuário, você deverá usar o nome "NtFlushBuffersFileEx" em vez de "ZwFlushBuffersFileEx".
 
Para chamadas de drivers no modo kernel, as versões **Nt*Xxx*** e **Zw*Xxx*** de uma rotina dos Serviços do Sistema Nativo do Windows 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 **Nt*Xxx*** e **Zw*Xxx*** de uma rotina, consulte [Usando versões Nt e Zw das rotinas de serviços nativos do sistema](/windows-hardware/drivers/kernel/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

FltFlushBuffers

IRP_MJ_FLUSH_BUFFERS

Usando versões Nt e Zw das rotinas dos Serviços de Sistema Nativo

ZwCreateFile

ZwOpenFile