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 GB 的文件不需要高阶 DWORD。
返回值
如果函数成功,则返回值为用于存储指定文件的磁盘存储的实际字节数的低序 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 透明故障转移 (TFO) | 是 |
具有横向扩展文件共享的 SMB 3.0 (SO) | 是 |
群集共享卷文件系统 (CSV) | 是 |
弹性文件系统 (ReFS) | 是 |
注意
fileapi.h 标头将 GetCompressedFileSize 定义为别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将非特定编码别名与非非特定编码的代码混合使用可能会导致不匹配,从而导致编译或运行时错误。 有关详细信息,请参阅 函数原型的约定。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 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 |