GetCompressedFileSizeA 関数 (fileapi.h)

指定したファイルの格納に使用されるディスク ストレージの実際のバイト数を取得します。 ファイルが圧縮をサポートするボリューム上にあり、ファイルが圧縮されている場合、取得される値は指定されたファイルの圧縮サイズです。 ファイルがスパース ファイルをサポートするボリューム上にあり、そのファイルがスパース ファイルである場合、取得される値は指定されたファイルのスパース サイズです。

この操作をトランザクション操作として実行するには、 GetCompressedFileSizeTransacted 関数を 使用します。

構文

DWORD GetCompressedFileSizeA(
  [in]            LPCSTR  lpFileName,
  [out, optional] LPDWORD lpFileSizeHigh
);

パラメーター

[in] lpFileName

ファイルの名前です。

パイプや通信デバイスなど、見えないデバイス上のファイルの名前は指定しないでください。ファイル サイズには意味がないためです。

このパラメーターには、パスを含めることができます。

既定では、名前はMAX_PATH文字に制限されています。 この制限を 32,767 文字のワイド文字に拡張するには、パスの先頭に "\\?\" を付加します。 詳細については、「ファイル、パス、および名前空間の名前付け」を参照してください。

ヒント

Windows 10 バージョン 1607 以降では、"\\?\" を前に置かずに、MAX_PATHの制限を削除するようにオプトインできます。 詳細については、「 ファイル、パス、および名前空間の名前付け 」の「最大パス長の制限」セクションを参照してください。

[out, optional] lpFileSizeHigh

圧縮ファイル サイズの上位 DWORD 。 関数の戻り値は、圧縮ファイル サイズの下位 DWORD です。

圧縮ファイル サイズの上位 DWORD が不要な場合、このパラメーターは NULL にすることができます。 サイズが 4 ギガバイト未満のファイルでは、高次 DWORD は必要ありません。

戻り値

関数が成功した場合、戻り値は、指定されたファイルの格納に使用されるディスク ストレージの実際のバイト数の下位 DWORD であり、 lpFileSizeHighNULL 以外の場合、関数はその実際の値の上位 DWORD をそのパラメーターが指す DWORD に格納します。 圧縮ファイルの圧縮ファイル サイズ、圧縮されていないファイルの実際のファイル サイズです。

関数が失敗し、 lpFileSizeHighNULL の場合、戻り値は INVALID_FILE_SIZE。 詳細なエラー情報を得るには、GetLastError を呼び出します。

戻り値が INVALID_FILE_SIZE され、 lpFileSizeHighNULL 以外の場合、アプリケーションは GetLastError を 呼び出して、関数が成功した (値が NO_ERROR) か失敗したか (値が NO_ERROR以外) かどうかを判断する必要があります。

注釈

アプリケーションは、GetVolumeInformation を呼び出し、その関数の lpFileSystemFlags パラメーターが指す DWORD 値のFS_VOL_IS_COMPRESSED フラグの状態を確認することで、ボリュームが圧縮されているかどうかを判断できます。

圧縮ファイルまたはスパース ファイルをサポートするボリュームにファイルが配置されていない場合、またはファイルが圧縮されていない場合、またはスパース ファイルでない場合、取得される値は、 GetFileSize の呼び出しによって返される値と同じ実際のファイル サイズになります。

シンボリック リンクの動作 : パスがシンボリック リンクを指している場合、関数はターゲットのファイル サイズを返します。

Windows 8 と Windows Server 2012 では、この関数は、次のテクノロジによってサポートされています。

テクノロジ サポートされています
サーバー メッセージ ブロック (SMB) 3.0 プロトコル はい
SMB 3.0 Transparent Failover (TFO) はい
スケールアウト ファイル共有 (SO) を使う SMB 3.0 はい
クラスターの共有ボリューム ファイル システム (CsvFS) はい
Resilient File System (ReFS) はい
 

注意

fileapi.h ヘッダーは、Unicode プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして GetCompressedFileSize を定義します。 エンコードに依存しないエイリアスをエンコードニュートラルでないコードと組み合わせて使用すると、コンパイルまたはランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「 関数プロトタイプの規則」を参照してください。

要件

要件
サポートされている最小のクライアント Windows XP (デスクトップ アプリのみ)
サポートされている最小のサーバー Windows Server 2003 (デスクトップ アプリのみ)
対象プラットフォーム Windows
ヘッダー fileapi.h (Windows.h、WinBase.h、Fileapi.h、Windows.h、WinBase.h、Fileapi.h を含む)
Library Kernel32.lib
[DLL] Kernel32.dll

関連項目

ファイルの圧縮と圧縮解除

File Management 関数

GetCompressedFileSizeTransacted

GetFileSize

GetVolumeInformation

シンボリック リンク