FlushViewOfFile 関数 (memoryapi.h)
ファイルのマップされたビュー内のバイト範囲をディスクに書き込みます。
構文
BOOL FlushViewOfFile(
[in] LPCVOID lpBaseAddress,
[in] SIZE_T dwNumberOfBytesToFlush
);
パラメーター
[in] lpBaseAddress
マップされたファイルのディスク表現にフラッシュされるバイト範囲のベース アドレスへのポインター。
[in] dwNumberOfBytesToFlush
フラッシュするバイト数。 dwNumberOfBytesToFlush が 0 の場合、ファイルはベース アドレスからマッピングの末尾にフラッシュされます。
戻り値
関数が成功すると、戻り値は 0 以外になります。
関数が失敗した場合は、0 を返します。 詳細なエラー情報を得るには、GetLastError を呼び出します。
解説
マップされたビューの範囲をフラッシュすると、その範囲内ダーティページのディスクへの書き込みが開始されます。 ダーティ ページとは、ファイル ビューがマップされてから内容が変更されたページです。 FlushViewOfFile 関数はファイル メタデータをフラッシュせず、変更が基になるハードウェア ディスク キャッシュからフラッシュされ、物理的にディスクに書き込まれるまで、戻るのを待機しません。 すべてのダーティ ページとファイルのメタデータをフラッシュし、それらが物理的にディスクに書き込まれるようにするには、FlushViewOfFile を呼び出し、FlushFileBuffers 関数を呼び出します。
ネットワーク経由でメモリ マップファイルをフラッシュする場合、 FlushViewOfFile は、データがローカル コンピューターから書き込まれたことを保証しますが、データがリモート コンピューターに存在しないことを保証します。 サーバーは、リモート側でデータをキャッシュできます。 したがって、 FlushViewOfFile は、データが物理的にディスクに書き込まれる前に を返すことができます。
マップされたビューを使用してファイルを変更する場合、最後の変更タイムスタンプが自動的に更新されない場合があります。 必要に応じて、呼び出し元は SetFileTime を使用してタイムスタンプを設定する必要があります。
Windows Server 2012では、この関数は次のテクノロジでサポートされています。
テクノロジ | サポートされています |
---|---|
サーバー メッセージ ブロック (SMB) 3.0 プロトコル | はい |
SMB 3.0 Transparent Failover (TFO) | はい |
スケールアウト ファイル共有 (SO) を使う SMB 3.0 | はい |
クラスターの共有ボリューム ファイル システム (CsvFS) | はい |
Resilient File System (ReFS) | はい |
CsvFs が一時停止すると、この呼び出しが失敗し、ロックの競合があることを示すエラーが発生する可能性があります。
例
例については、「 ファイル ビューからの読み取りと書き込み」を参照してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows XP [デスクトップ アプリ | UWP アプリ] |
サポートされている最小のサーバー | Windows Server 2003 [デスクトップ アプリのみ | UWP アプリ] |
対象プラットフォーム | Windows |
ヘッダー | memoryapi.h (Windows.h、Memoryapi.h を含む) |
Library | onecore.lib |
[DLL] | Kernel32.dll |