FlushFileBuffers

指定されたファイルのバッファをフラッシュし、すべてのバッファ済みデータをファイルに書き込ませる。

FlushFileBuffers hFile

hFile : [intptr] 開かれているファイルへのハンドル。ファイルハンドルは GENERIC_WRITE アクセス権を持っていなければならない。詳細は File Security and Access Rights を参照。hFile が通信デバイスへのハンドルの場合、関数は送信バッファのみをフラッシュする。hFile が名前付きパイプのサーバー側へのハンドルの場合、関数はクライアントがパイプからすべてのバッファ済みデータを読み取るまで戻らない。

(プラグイン / モジュール : kernel32.dll)

解説

指定されたファイルのバッファをフラッシュし、すべてのバッファ済みデータをファイルに書き込ませる。

[戻り値]
関数が成功した場合、戻り値は 0 以外である。関数が失敗した場合、戻り値は 0 となる。拡張エラー情報を取得するには
GetLastError を呼ぶ。hFile
がコンソール出力へのハンドルの場合、関数は失敗する。これはコンソール出力がバッファされないためである。関数は FALSE
を返し、GetLastError は ERROR_INVALID_HANDLE を返す。

[備考]
通常、WriteFile および WriteFileEx
関数は内部バッファにデータを書き込み、オペレーティングシステムが定期的にディスクや通信パイプに書き込む。FlushFileBuffers
関数は、指定されたファイルのすべてのバッファ済み情報をデバイスやパイプに書き込む。システム内のディスクキャッシュ相互作用により、多くの書き込みが個別に実行されている場合、ディスクドライブデバイスへの各書き込みの後で
FlushFileBuffers
関数を使うのは非効率である可能性がある。アプリケーションがディスクへの複数の書き込みを実行し、重要なデータが永続メディアに書き込まれることも保証する必要がある場合、頻繁に
FlushFileBuffers を呼び出すのではなくバッファなし I/O を使用すべきである。バッファなし I/O
用にファイルを開くには、FILE_FLAG_NO_BUFFERING および FILE_FLAG_WRITE_THROUGH
フラグを使って CreateFile
関数を呼ぶ。これにより、ファイルの内容がキャッシュされず、各書き込みごとにメタデータがディスクにフラッシュされる。詳細は
CreateFile を参照。ボリューム上のすべての開かれているファイルをフラッシュするには、ボリュームへのハンドルで
FlushFileBuffers を呼び出す。呼び出し側は管理者特権を持っていなければならない。詳細は Running with
Special Privileges を参照。CreateFile でボリュームを開くとき、lpFileName 文字列は \\.\x:
または \\?\Volume{GUID}
の形式でなければならない。末尾のバックスラッシュはドライブのルートディレクトリを示すため使用してはならない。Windows 8 および
Windows Server 2012 では、この関数は次の技術でサポートされる。
(以下省略)

情報

プラグイン / モジュールkernel32.dll
バージョン1.0
作成日2026/04/16
著作者IronHSP / CsWin32 bridge
URLhttps://github.com/inovia/IronHSP
備考Win32 API の kernel32.dll 関数群。CsWin32 + win32metadata から自動生成。
hsp3net 専用 (intptr / NSTRUCT / wstr を使用)。
タイプ拡張命令
グループWin32API
対応環境
  • Windows 版 HSP
hs ファイルhsphelp\win32_kernel32_gen2.hs