GetCompressedFileSize函数获取指定文件的压缩大小(以字节为单位)。
GetCompressedFileSize函数获取用于存储指定文件的磁盘存储的实际字节数。如果文件位于支持压缩的卷上,并且文件被压缩,则获取的值是指定文件的压缩大小。如果文件不在支持压缩的卷上,或者文件未压缩,则获取的值为实际文件大小,与调用GetFileSize返回的值相同。
DWORD GetCompressedFileSize(
LPCTSTR 【lpFileName】, | //指向文件名的指针 |
LPDWORD 【lpFileSizeHigh】 | //指向DWORD的指针,以接收文件大小的高位双字 |
); |
参数
【lpFileName】
指向指定文件名称的以空值终止的字符串的指针。
【lpFileSizeHigh】
指向DWORD变量的指针,该变量将该函数设置为压缩文件大小的高位双字。函数的返回值是压缩文件大小的低位双字。
如果不需要压缩文件大小的高位双字,则此参数可以为NULL。小于4 GB的文件不需要高级双字。
返回值
如果函数成功,则返回值是用于存储指定文件的磁盘存储器的实际字节数的低位双字,如果【lpFileSizeHigh】不为空,则该函数将该字节的高位双字该参数指向的DWORD的实际值。这是压缩文件的压缩文件大小,非压缩文件的实际文件大小。
如果该函数失败,并且【lpFileSizeHigh】为NULL,返回值为0xFFFFFFFF。要获取扩展错误信息,请调用GetLastError.
如果该函数失败,并且【lpFileSizeHigh】非NULL,则返回值为0xFFFFFFFF,GetLastError返回除NO_ERROR之外的值。
备注
使用非查询设备(例如管道或通信设备)的名称调用GetCompressedFileSize功能没有任何意义。
请注意,如果返回值为0xFFFFFFFF,并且【lpFileSizeHigh】为非NULL,则应用程序必须调用GetLastError以确定函数是成功还是失败。
应用程序可以通过调用GetVolumeInformation来确定卷是否压缩,然后检查该函数的【lpFileSystemFlags】参数指向的DWORD中的FS_VOL_IS_COMPRESSED标志的状态。
应用程序可以通过实现以下伪代码来确定文件是否被压缩:
在文件的卷上调用GetVolumeInformation
如果文件的卷被压缩
在文件上调用GetCompressedFileSize
在文件上调用GetFileSize
如果尺寸不匹配
文件被压缩
也可以看看