ディスクへの System-Buffered I/O データのフラッシュ

Windows では、ディスクのパフォーマンスを最適化するために、システムによって管理されるデータ バッファーのファイルの読み取りおよび書き込み操作にデータが格納されます。 アプリケーションがファイルに書き込むとき、システムは通常、データをバッファーに格納し、定期的にデータをディスクに書き込みます。 アプリケーションは、 FlushFileBuffers 関数を使用して、オペレーティング システムにこれらのデータ バッファーの内容を強制的にディスクに書き込むことができます。 または、CreateFile 関数を使用してファイルを作成または開いたときに FILE_FLAG_NO_BUFFERING フラグを設定することで、書き込み操作でデータ バッファーをバイパスし、ディスクに直接書き込むよう指定することもできます。

ファイルを閉じるときに内部バッファーにデータがある場合、オペレーティング システムは、ファイルを閉じる前にバッファーの内容をディスクに自動的に書き込むことはありません。 アプリケーションがファイルを閉じる前にオペレーティング システムがバッファーを強制的にディスクに書き込まない場合、キャッシュ アルゴリズムによってバッファーが書き込まれるタイミングが決定されます。

Note

読み取りまたは書き込み操作でデータ バッファーにアクセスすると、バッファーが破損する可能性があります。 アプリケーションは、操作が完了するまで、読み取りまたは書き込み操作で使用されているデータ バッファーの読み取り、書き込み、再割り当て、または解放を行う必要はありません。