我的硬盘是320G的,我用GetDiskFreeSpaceEx获取每个分区的容量相加,但是最后结果只有280多G是怎么回事?是不是有什么系统保留的隐藏分区?

解决方案 »

  1.   

    是因为硬件厂家的计算方法和计算机系统的计算方法差异造成的。由于计算机计算容量所用的单位为比特,按计算机的算法,每K的计算标准是1024,也就是说1GB=1024×1024×1024 BIT=1073741824 BIT而厂家在生产硬盘时的默认算法为每K是1000:1GB=1000×1000×1000 BIT=1000000000 BIT也就是说,厂家计算的容量实际上是计算机计算容量的93%。例如:购买一个80G的硬盘,那么,按厂家的的计算方法容量应该是80GB×93%=74.4GB。
      

  2.   

    如果你有多个硬盘, 或隐藏分区(未分配盘符), GetDiskFreeSpaceEx()算出来的肯定不准的.
    直接取设备信息吧, 用DeviceIoControl() + IOCTL_DISK_GET_DRIVE_GEOMETRY, MSDN上有例程