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 であり、 lpFileSizeHigh が NULL 以外の場合、関数はその実際の値の上位 DWORD をそのパラメーターが指す DWORD に格納します。 圧縮ファイルの圧縮ファイル サイズ、圧縮されていないファイルの実際のファイル サイズです。
関数が失敗し、 lpFileSizeHigh が NULL の場合、戻り値は INVALID_FILE_SIZE。 詳細なエラー情報を得るには、GetLastError を呼び出します。
戻り値が INVALID_FILE_SIZE され、 lpFileSizeHigh が NULL 以外の場合、アプリケーションは 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 |