GetCompressedFileSizeTransactedA 関数 (winbase.h)

[Microsoft では、開発者がアプリケーションのニーズを達成するために代替手段を利用することを強くお勧めします。 TxF が開発された多くのシナリオは、よりシンプルで利用しやすい手法で実現できます。 また、将来のバージョンの Microsoft Windows では TxF を使用できない場合があります。 詳細、および TxF の代替手段については、「トランザクション NTFS の使用の代替手段」を参照してください。]

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

構文

DWORD GetCompressedFileSizeTransactedA(
  [in]            LPCSTR  lpFileName,
  [out, optional] LPDWORD lpFileSizeHigh,
  [in]            HANDLE  hTransaction
);

パラメーター

[in] lpFileName

ファイルの名前です。

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

ファイルはローカル コンピューターに存在する必要があります。それ以外の場合、関数は失敗し、最後のエラー コードは ERROR_TRANSACTIONS_UNSUPPORTED_REMOTE に設定されます。

[out, optional] lpFileSizeHigh

圧縮ファイル サイズの上位 DWORD を受け取る変数へのポインター。 関数の戻り値は、圧縮ファイル サイズの下位 DWORD です。

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

[in] hTransaction

トランザクションのハンドル。 このハンドルは、 CreateTransaction 関数によって返されます。

戻り値

関数が成功した場合、戻り値は、指定されたファイルの格納に使用されるディスク ストレージの実際のバイト数の下位 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) いいえ
 

SMB 3.0 は TxF をサポートしていません。

注意

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

要件

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

関連項目

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

File Management 関数

GetFileSize

GetVolumeInformation

シンボリック リンク

トランザクション管理