FlushFileBuffers 函式 (fileapi.h)
清除指定檔案的緩衝區,並導致所有緩衝的數據寫入檔案。
語法
BOOL FlushFileBuffers(
[in] HANDLE hFile
);
參數
[in] hFile
開啟檔案的句柄。
檔句柄必須具有 GENERIC_WRITE 訪問許可權。 如需詳細資訊,請參閱 檔案安全性和存取權限。
如果 hFile 是通訊裝置的句柄,則函式只會排清傳輸緩衝區。
如果 hFile 是命名管道伺服器端的句柄,則函式不會傳回,直到用戶端從管道讀取所有緩衝數據為止。
傳回值
如果函式成功,則傳回值為非零值。
如果函式失敗,傳回值為零。 若要取得擴充的錯誤資訊,請呼叫 GetLastError。
如果 hFile 是主控台輸出的句柄,則函式會失敗。 這是因為主控台輸出並未緩衝處理。 函式會傳回
言論
一般而言,WriteFile 和 WriteFileEx 函式會將數據寫入作業系統定期寫入磁碟或通訊管道的內部緩衝區。 FlushFileBuffers 函式會將指定檔案的所有緩衝資訊寫入裝置或管道。
由於系統內的磁碟快取互動,FlushFileBuffers 函式在每次寫入磁碟驅動器裝置之後使用時,在個別執行許多寫入時,可能會沒有效率。 如果應用程式正在對磁碟執行多個寫入,而且也需要確保重要數據寫入永續性媒體,應用程式應該使用未壓縮的 I/O,而不是經常呼叫 flushFileBuffers
若要排清磁碟區上所有開啟的檔案,請使用磁碟區的句柄呼叫 flushFileBuffers 。 呼叫端必須具有系統管理許可權。 如需詳細資訊,請參閱 以特殊許可權執行。
使用 CreateFile開啟
在 Windows 8 和 Windows Server 2012 中,下列技術支援此功能。
科技 | 支援 |
---|---|
伺服器消息塊 (SMB) 3.0 通訊協定 | 是的 |
SMB 3.0 透明故障轉移 (TFO) | 是的 |
具有向外延展檔案共用的SMB 3.0(SO) | 是的 |
叢集共用磁碟區檔案系統 (CsvFS) | 是的 |
復原檔案系統 (ReFS) | 是的 |
例子
如需範例,請參閱 多線程管道伺服器。
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | Windows XP [傳統型應用程式 |UWP 應用程式] |
支援的最低伺服器 | Windows Server 2003 [傳統型應用程式 |UWP 應用程式] |
目標平臺 | 窗戶 |
標頭 | fileapi.h (包括 Windows.h) |
連結庫 | Kernel32.lib |
DLL | Kernel32.dll |