GetCompressedFileSizeTransactedA 函数 (winbase.h)

[Microsoft 强烈建议开发人员使用替代方法来实现应用程序的需求。 TxF 致力于实现的许多方案都可以通过更简单、更易用的技术来实现。 此外,TxF 在 Microsoft Windows 的将来版本中可能不可用。 有关详细信息,以及 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 GB 的文件不需要高阶 DWORD

[in] hTransaction

事务的句柄。 此句柄由 CreateTransaction 函数返回。

返回值

如果函数成功,则返回值是用于存储指定文件的实际磁盘存储字节数的低序 DWORD ;如果 lpFileSizeHigh 为非 NULL,则该函数会将该实际值的高阶 DWORD 放入该参数指向的 DWORD 中。 这是压缩文件的压缩文件大小,非压缩文件的实际文件大小。

如果函数失败,并且 lpFileSizeHighNULL,则返回值为 INVALID_FILE_SIZE。 要获得更多的错误信息,请调用 GetLastError。

如果返回值为 INVALID_FILE_SIZElpFileSizeHigh 为非 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 透明故障转移 (TFO)
具有横向扩展文件共享的 SMB 3.0 (SO)
群集共享卷文件系统 (CSV)
弹性文件系统 (ReFS)
 

SMB 3.0 不支持 TxF。

注意

winbase.h 标头将 GetCompressedFileSizeTransacted 定义为别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将非特定编码别名的使用与非非特定编码的代码混合使用可能会导致不匹配,从而导致编译或运行时错误。 有关详细信息,请参阅 函数原型的约定

要求

要求
最低受支持的客户端 Windows Vista [仅限桌面应用]
最低受支持的服务器 Windows Server 2008 [仅限桌面应用]
目标平台 Windows
标头 winbase.h (包括 Windows.h)
Library Kernel32.lib
DLL Kernel32.dll

另请参阅

文件压缩和解压缩

文件管理函数

GetFileSize

GetVolumeInformation

符号链接

事务管理