Função FlushFileBuffers (fileapi.h)
Libera os buffers de um arquivo especificado e faz com que todos os dados em buffer sejam gravados em um arquivo.
Sintaxe
BOOL FlushFileBuffers(
[in] HANDLE hFile
);
Parâmetros
[in] hFile
Um identificador para o arquivo aberto.
O identificador de arquivo deve ter o acesso GENERIC_WRITE correto. Para obter mais informações, consulte de Segurança de Arquivos e Direitos de Acesso.
Se hFile for um identificador para um dispositivo de comunicação, a função libera apenas o buffer de transmissão.
Se hFile for um identificador para a extremidade do servidor de um pipe nomeado, a função não retornará até que o cliente tenha lido todos os dados em buffer do pipe.
Valor de retorno
Se a função for bem-sucedida, o valor retornado não será zero.
Se a função falhar, o valor retornado será zero. Para obter informações de erro estendidas, chame GetLastError.
A função falhará se hFile for um identificador para a saída do console. Isso ocorre porque a saída do console não está em buffer. A função retorna FALSE e GetLastError retorna ERROR_INVALID_HANDLE.
Observações
Normalmente, as funções WriteFile e WriteFileEx gravam dados em um buffer interno que o sistema operacional grava em um disco ou pipe de comunicação regularmente. A função FlushFileBuffers grava todas as informações em buffer de um arquivo especificado no dispositivo ou pipe.
Devido às interações de cache de disco dentro do sistema, a função FlushFileBuffers pode ser ineficiente quando usada após cada gravação em um dispositivo de unidade de disco quando muitas gravações estão sendo executadas separadamente. Se um aplicativo estiver executando várias gravações em disco e também precisar garantir que os dados críticos sejam gravados em mídia persistente, o aplicativo deverá usar E/S não armazenada em vez de chamar com frequência FlushFileBuffers. Para abrir um arquivo para E/S não oferecida, chame a função CreateFile
Para liberar todos os arquivos abertos em um volume, chame FlushFileBuffers com um identificador para o volume. O chamador deve ter privilégios administrativos. Para obter mais informações, consulte Em execução com privilégios especiais.
Ao abrir um volume com
No Windows 8 e no Windows Server 2012, essa função é compatível com as tecnologias a seguir.
Tecnologia | Suportado |
---|---|
Protocolo SMB (Bloco de Mensagens do Servidor) 3.0 | Sim |
TFO (Failover Transparente) do SMB 3.0 | Sim |
SMB 3.0 com Compartilhamentos de Arquivos de Expansão (SO) | Sim |
Sistema de Arquivos de Volume Compartilhado de Cluster (CsvFS) | Sim |
ReFS (Sistema de Arquivos Resiliente) | Sim |
Exemplos
Para obter um exemplo, consulte servidor de pipe multithreaded.
Requisitos
Requisito | Valor |
---|---|
de cliente com suporte mínimo | Windows XP [aplicativos da área de trabalho | Aplicativos UWP] |
servidor com suporte mínimo | Windows Server 2003 [aplicativos da área de trabalho | Aplicativos UWP] |
da Plataforma de Destino |
Windows |
cabeçalho | fileapi.h (inclua Windows.h) |
biblioteca | Kernel32.lib |
de DLL |
Kernel32.dll |