总可用空间检测不适用于大型硬盘?

时间:2017-12-15 10:20:42

标签: c# io

我正在使用ac#程序查看硬盘上仍有多少GB空闲(总大小1 TB,免费大小110 GB (确切地说,根据驱动器属性)在Windows资源管理器中:根据Windows的118.333.329.408字节)。

我的问题是我得到的结果是.....关闭。

10,135,252,992 字节根据 C#方法我在下面使用.....但根据Windows 110! GB是免费的。

注意:我在这里谈论Windows Server,驱动器是D驱动器。因此没有交换文件,也没有隐藏的系统文件(至少不超过任何非系统驱动器,因为系统驱动器是C驱动器)。

public long GetTotalFreeSpace(string driveName)
{
    foreach (DriveInfo drive in DriveInfo.GetDrives())
    {
        if (drive.IsReady && drive.Name == driveName)
        {
            return drive.TotalFreeSpace;
        }
    }
    return -1;
}

我的问题是这是怎样的以及如何纠正它?

1 个答案:

答案 0 :(得分:8)

在幕后,System.IO.DriveInfo assembly似乎使用了Windows API中的GetDiskFreeSpaceEx function

标准版GetDiskFreeSpaceGetDiskFreeSpaceEx之间的区别归结为:

<强> GetDiskFreeSpace

  

GetDiskFreeSpace功能   检索有关指定磁盘的信息,包括磁盘上的可用空间量。

<强> GetDiskFreeSpaceEx

  

GetDiskFreeSpaceEx函数   检索有关磁盘卷上可用空间量的信息,即空间总量,可用空间总量以及与调用线程关联的用户可用空间总量。 / p>

最有可能的是,您在当前用户可用的空间上达到了一些配额。