SetEndOfFile 関数 (fileapi.h)
指定したファイルの物理ファイル サイズをファイル ポインターの現在位置に設定します。
物理ファイル サイズは、ファイルの末尾とも呼ばれます。 SetEndOfFile 関数を使用すると、ファイルを切り捨てたり拡張したりできます。 ファイルの論理終了を設定するには、 SetFileValidData 関数を使用します。
構文
BOOL SetEndOfFile(
[in] HANDLE hFile
);
パラメーター
[in] hFile
拡張または切り捨てられるファイルのハンドル。
ファイル ハンドルは、GENERIC_WRITEアクセス権を使用して作成 する 必要があります。 詳細については、「 ファイル のセキュリティとアクセス権」を参照してください。
戻り値
関数が成功すると、戻り値は 0 以外になります。
関数が失敗した場合は、0 を返します。 詳細なエラー情報を得るには、GetLastError を呼び出します。
解説
SetEndOfFile 関数を使用すると、ファイルを切り捨てたり拡張したりできます。 ファイルが拡張されている場合、ファイルの古い末尾とファイルの新しい末尾の間のファイルの内容は定義されません。
各ファイル ストリームには、次の情報があります。
- ファイル サイズ: ファイル内のデータのバイトまでのサイズ。
- 割り当てサイズ: ディスク上のファイルに割り当てられる領域のサイズ。これは、常にクラスター サイズの偶数の倍数です。
- 有効なデータ長: 実際にバイトに書き込まれるファイル内のデータの長さ。 この値は、常にファイル サイズ以下です。
状況
CreateFileMapping は hFile のファイル マッピング オブジェクトを作成するために呼び出されます。SetEndOfFile を呼び出す前に、すべてのビューのマップを解除し、CloseHandle を呼び出してファイル マッピング オブジェクトを閉じるには、まず UnmapViewOfFile を呼び出す必要があります。
トランザクション操作
ハンドルにバインドされたトランザクションがある場合、ファイルの終わり位置の変更はトランザクション処理対象です。Windows 8 と Windows Server 2012 では、この関数は、次のテクノロジによってサポートされています。
テクノロジ | サポートされています |
---|---|
サーバー メッセージ ブロック (SMB) 3.0 プロトコル | はい |
SMB 3.0 Transparent Failover (TFO) | はい |
スケールアウト ファイル共有 (SO) を使う SMB 3.0 | はい |
クラスターの共有ボリューム ファイル システム (CsvFS) | はい |
Resilient File System (ReFS) | はい |
要件
サポートされている最小のクライアント | Windows XP [デスクトップ アプリ | UWP アプリ] |
サポートされている最小のサーバー | Windows Server 2003 [デスクトップ アプリのみ | UWP アプリ] |
対象プラットフォーム | Windows |
ヘッダー | fileapi.h (Windows.h を含む) |
Library | Kernel32.lib |
[DLL] | Kernel32.dll |