Funzione FlushFileBuffers (fileapi.h)
Scarica i buffer di un file specificato e causa la scrittura di tutti i dati memorizzati nel buffer in un file.
Sintassi
BOOL FlushFileBuffers(
[in] HANDLE hFile
);
Parametri
[in] hFile
Handle per il file aperto.
L'handle file deve avere il diritto di accesso GENERIC_WRITE . Per altre informazioni, vedere Sicurezza file e diritti di accesso.
Se hFile è un handle a un dispositivo di comunicazione, la funzione scarica solo il buffer di trasmissione.
Se hFile è un handle alla fine del server di una pipe denominata, la funzione non restituisce finché il client non ha letto tutti i dati memorizzati nel buffer dalla pipe.
Valore restituito
Se la funzione ha esito positivo, il valore restituito è diverso da zero.
Se la funzione ha esito negativo, il valore restituito è zero. Per informazioni dettagliate sull'errore, chiamare GetLastError.
La funzione ha esito negativo se hFile è un handle per l'output della console. Questo perché l'output della console non viene memorizzato nel buffer. La funzione restituisce FALSE e GetLastError restituisce ERROR_INVALID_HANDLE.
Commenti
In genere le funzioni WriteFile e WriteFileEx scrivono dati in un buffer interno che il sistema operativo scrive in un disco o in una pipe di comunicazione regolarmente. La funzione FlushFileBuffers scrive tutte le informazioni memorizzate nel buffer per un file specificato nel dispositivo o nella pipe.
A causa delle interazioni di memorizzazione nella cache dei dischi all'interno del sistema, la funzione FlushFileBuffers può essere inefficiente quando ogni scrittura viene eseguita separatamente in un dispositivo unità disco. Se un'applicazione esegue più operazioni di scrittura su disco e deve anche garantire che i dati critici vengano scritti in supporti persistenti, l'applicazione deve usare I/O non memorizzati in modo frequente anziché chiamare Spesso FlushFileBuffers. Per aprire un file per I/O non memorizzati, chiamare la funzione CreateFile con i flag di FILE_FLAG_NO_BUFFERING e FILE_FLAG_WRITE_THROUGH . In questo modo il contenuto del file viene memorizzato nella cache e scarica i metadati su disco con ogni scrittura. Per altre informazioni, vedere CreateFile.
Per scaricare tutti i file aperti in un volume, chiamare FlushFileBuffers con un handle per il volume. Il chiamante deve avere privilegi amministrativi. Per altre informazioni, vedere Esecuzione con privilegi speciali.
Quando si apre un volume con CreateFile, la stringa lpFileName deve essere la forma seguente: \.\x: o \?\Volume{GUID}. Non usare una barra rovesciata finale nel nome del volume, perché indica la directory radice di un'unità.
In Windows 8 e Windows Server 2012 questa funzione è supportata dalle tecnologie seguenti.
Tecnologia | Supportato |
---|---|
Protocollo SMB (Server Message Block) 3.0 | Sì |
Failover trasparente SMB 3.0 (TFO) | Sì |
SMB 3.0 con condivisioni file con scalabilità orizzontale (SO) | Sì |
File system del volume condiviso del cluster (CsvFS) | Sì |
File system resiliente (ReFS) | Sì |
Esempi
Per un esempio, vedere Server pipe multithreaded.
Requisiti
Client minimo supportato | Windows XP [app desktop | App UWP] |
Server minimo supportato | Windows Server 2003 [app desktop | App UWP] |
Piattaforma di destinazione | Windows |
Intestazione | fileapi.h (includere Windows.h) |
Libreria | Kernel32.lib |
DLL | Kernel32.dll |
Vedere anche
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per