GetDiskFreeSpaceEx获取的硬盘容量不准确?

一如当初 2011-01-18 05:44:49
我的硬盘是320G的,我用GetDiskFreeSpaceEx获取每个分区的容量相加,但是最后结果只有280多G

是怎么回事?是不是有什么系统保留的隐藏分区?
...全文
223 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
playerbbs163 2012-06-13
  • 打赏
  • 举报
回复
如果你有多个硬盘, 或隐藏分区(未分配盘符), GetDiskFreeSpaceEx()算出来的肯定不准的.
直接取设备信息吧, 用DeviceIoControl() + IOCTL_DISK_GET_DRIVE_GEOMETRY, MSDN上有例程
一如当初 2011-01-18
  • 打赏
  • 举报
回复
谢谢这么详细的解答,长知识了!
JPEXE 2011-01-18
  • 打赏
  • 举报
回复
是因为硬件厂家的计算方法和计算机系统的计算方法差异造成的。

由于计算机计算容量所用的单位为比特,按计算机的算法,每K的计算标准是1024,也就是说1GB=1024×1024×1024 BIT=1073741824 BIT

而厂家在生产硬盘时的默认算法为每K是1000:1GB=1000×1000×1000 BIT=1000000000 BIT

也就是说,厂家计算的容量实际上是计算机计算容量的93%。

例如:购买一个80G的硬盘,那么,按厂家的的计算方法容量应该是80GB×93%=74.4GB。

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧