使用压缩磁盘的 GetDiskFreeSpaceEx
我想获取压缩磁盘上的可用空间以将其显示给最终用户。 我在 Windows 2000 及更高版本上使用 C++、MFC。 Windows API 提供 GetDiskFreeSpaceEx()< /a>
函数。
然而,这个函数似乎返回“未压缩”的数据大小。 这给我带来了一些问题。
例如 : - 磁盘大小为 100 GB - 数据大小为 90 GB - 压缩数据大小为 80 GB
用户会看到磁盘已满 90%,但实际上只有 80% 已满。
编辑
正如 Gleb 指出的,该函数正在返回好的信息。
所以这是新的问题:有没有一种方法可以同时获取压缩后的大小和未压缩的大小?
I want to get the free space on a compressed disk to show it to a end user. I'm using C++, MFC on Windows 2000 and later. The Windows API offers the GetDiskFreeSpaceEx()
function.
However, this function seems to return the "uncompressed" sized of the data. This cause me some problem.
For example :
- Disk size is 100 GB
- Data size is 90 GB
- Compressed data size is 80 GB
The user will see that the disk is 90% full, but in reality, it is only 80% full.
EDIT
As Gleb pointed out, the function is returning the good information.
So here is the new question : is there a way to get both the compressed size and the uncompressed one?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我认为您必须映射所有文件,使用 GetFileSize() 和 GetCompressedFileSize() 进行查询并将它们相加。 使用GetFileAttributes() 来了解文件是否被压缩,以防只有整个卷的一部分被压缩,这肯定是这种情况。
真的。
也许从全面扫描(应用程序启动)开始并填充您的自定义数据结构,例如从文件名到文件数据结构/类的哈希/映射,然后使用 FindFirstChangeNotification() 轮询驱动器并更新相应地你的内部结构。
您可能还想阅读“更改日记”。 我自己从未使用过它们,所以不知道它们是如何工作的,但可能值得一试。
I think you would have to map over all files, query with GetFileSize() and GetCompressedFileSize() and sum them up. Use GetFileAttributes() to know if a file is compressed or not, in case only parts of the whole volume is compressed, which might certainly be the case.
True.
Perhaps start off by a full scan (application startup) and populate your custom data structure, e.g. a hash/map from file name to file data struct/class, then poll the drive with FindFirstChangeNotification() and update your internal structure accordingly.
You might also want to read about "Change Journals". I have never used them myself so don't know how they work, but might be worth checking out.
该函数正确返回可用空间量。 可以使用这个简单的程序来演示。
压缩之前未压缩的目录后,可用空间会增加。
那么你在说什么?
The function returns the amount of free space correctly. It can be demonstrated by using this simple program.
After compressing a previously uncompressed directory the free space grows.
So what are you talking about?