共用方式為


FlushFileBuffers 函式 (fileapi.h)

清除指定檔案的緩衝區,並導致所有緩衝的數據寫入檔案。

語法

BOOL FlushFileBuffers(
  [in] HANDLE hFile
);

參數

[in] hFile

開啟檔案的句柄。

檔句柄必須具有 GENERIC_WRITE 訪問許可權。 如需詳細資訊,請參閱 檔案安全性和存取權限

如果 hFile 是通訊裝置的句柄,則函式只會排清傳輸緩衝區。

如果 hFile 是命名管道伺服器端的句柄,則函式不會傳回,直到用戶端從管道讀取所有緩衝數據為止。

傳回值

如果函式成功,則傳回值為非零值。

如果函式失敗,傳回值為零。 若要取得擴充的錯誤資訊,請呼叫 GetLastError

如果 hFile 是主控台輸出的句柄,則函式會失敗。 這是因為主控台輸出並未緩衝處理。 函式會傳回 FALSE,而 getLastError 會傳回 ERROR_INVALID_HANDLE

言論

一般而言,WriteFileWriteFileEx 函式會將數據寫入作業系統定期寫入磁碟或通訊管道的內部緩衝區。 FlushFileBuffers 函式會將指定檔案的所有緩衝資訊寫入裝置或管道。

由於系統內的磁碟快取互動,FlushFileBuffers 函式在每次寫入磁碟驅動器裝置之後使用時,在個別執行許多寫入時,可能會沒有效率。 如果應用程式正在對磁碟執行多個寫入,而且也需要確保重要數據寫入永續性媒體,應用程式應該使用未壓縮的 I/O,而不是經常呼叫 flushFileBuffers。 若要開啟未壓縮 I/O 的檔案,請使用 FILE_FLAG_NO_BUFFERINGFILE_FLAG_WRITE_THROUGH 旗標呼叫 CreateFile 函式。 這可防止檔案內容被快取,並使用每個寫入將元數據排清到磁碟。 如需詳細資訊,請參閱 CreateFile

若要排清磁碟區上所有開啟的檔案,請使用磁碟區的句柄呼叫 flushFileBuffers 。 呼叫端必須具有系統管理許可權。 如需詳細資訊,請參閱 以特殊許可權執行

使用 CreateFile開啟 磁碟區時,lpFileName 字串的格式應該是:\\.\x: 或 \\?\Volume{GUID}。 請勿在磁碟區名稱中使用尾端反斜杠,因為這表示磁碟驅動器的根目錄。

在 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

另請參閱

CreateFile

檔案管理功能

WriteFile

WriteFileEx