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

Tho*_*mas 5 c# io

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

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

根据我在下面使用的C#方法,它是10,135,252,992字节.....但根据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;
}
Run Code Online (Sandbox Code Playgroud)

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

dpe*_*ish 8

在幕后,System.IO.DriveInfo程序集似乎使用Windows API中的GetDiskFreeSpaceEx函数.

标准版GetDiskFreeSpace和之间的区别GetDiskFreeSpaceEx归结为:

GetDiskFreeSpace:

GetDiskFreeSpace函数检索有关指定磁盘的信息,包括磁盘上的可用空间量.

GetDiskFreeSpaceEx:

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

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