GetFileSize 関数 (fileapi.h)
指定したファイルのサイズをバイト単位で取得します。
GetFileSizeEx を使用することをお勧めします。
構文
DWORD GetFileSize(
[in] HANDLE hFile,
[out, optional] LPDWORD lpFileSizeHigh
);
パラメーター
[in] hFile
ファイルへのハンドル。
[out, optional] lpFileSizeHigh
ファイル サイズの上位の doubleword が返される変数へのポインター。 アプリケーションで高次ダブルワードが不要な場合、このパラメーターは NULL にすることができます 。
戻り値
関数が成功した場合、戻り値はファイル サイズの下位の doubleword であり、 lpFileSizeHigh が NULL 以外の場合、関数はファイル サイズの上位の doubleword をそのパラメーターが指す変数に格納します。
関数が失敗し、 lpFileSizeHigh が NULL の場合、戻り値は INVALID_FILE_SIZE。 詳細なエラー情報を得るには、GetLastError を呼び出します。 lpFileSizeHigh が NULL の場合、大きなファイルに対して返される結果はあいまいであり、ファイルの実際のサイズを特定することはできません。 代わりに GetFileSizeEx を 使用することをお勧めします。
関数が失敗し、 lpFileSizeHigh が NULL 以外の場合、戻り値は INVALID_FILE_SIZE され、 GetLastError は NO_ERROR以外の値を返します。
解説
パイプや通信デバイスなどの見えないデバイスのハンドルで GetFileSize 関数を使用することはできません。 hFile のファイルの種類を確認するには、GetFileType 関数を使用します。
GetFileSize 関数は、ファイルの圧縮されていないサイズを取得します。 ファイルの圧縮サイズを取得するには、GetCompressedFileSize 関数を使用します。
戻り値が INVALID_FILE_SIZE (0xffffffff) の場合、アプリケーションは GetLastError を 呼び出して、関数が成功したか失敗したかを判断する必要があることに注意してください。 この関数が失敗しているように見える理由は、 lpFileSizeHigh が NULL 以外であるか、ファイル サイズが0xffffffff可能性があるためです。 この場合、 GetLastError は成功すると NO_ERROR (0) を返します。 この動作のため、代わりに GetFileSizeEx を 使用することをお勧めします。
トランザクション操作: ファイル ハンドルにバインドされたトランザクションがある場合、この関数は分離ファイル ビューの情報を返します。
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 (デスクトップ アプリのみ) |
サポートされている最小のサーバー | Windows Server 2003 (デスクトップ アプリのみ) |
対象プラットフォーム | Windows |
ヘッダー | fileapi.h (Windows.h を含む) |
Library | Kernel32.lib |
[DLL] | Kernel32.dll |