__int64 i64FreeBytes
unsigned __int64 lpFreeBytesAvailableToCaller,
                 lpTotalNumberOfBytes,
                 lpTotalNumberOfFreeBytes; // variables used to obtain 
                                           // the free space on the  drive

GetDiskFreeSpaceEx (Manager.capDir,
(PULARGE_INTEGER)&lpFreeBytesAvailableToCaller,
(PULARGE_INTEGER)&lpTotalNumberOfBytes,
(PULARGE_INTEGER)&lpTotalNumberOfFreeBytes);

i64FreeBytes = lpTotalNumberOfFreeBytes;
_tprintf(_T ("Number of bytes free on the drive:%I64u \n"),
     lpTotalNumberOfFreeBytes);

我正在开发一个数据管理例程,它是一个Windows CE命令行应用程序。上面的代码显示了如何获取包含文件夹Manager.capdir的特定驱动器上的空闲字节数(它是包含目录的完整路径名的变量)。

我的问题是,上面代码报告的空闲字节数(_tprintf语句)与驱动器的空闲字节数不匹配(我通过右键单击驱动器来检查)。

我想知道这种差异的原因是什么?

有帮助吗?

解决方案

我有一台没有磁盘配额的单用户计算机。我将您的代码发布到基于对话框的MFC应用程序中并运行它,我使用的单一条件是“C:\”。作为lpDirectoryName参数,所以我可以比较系统报告的驱动器可用空间。这似乎是合乎逻辑的,因为可用空间仅对驱动器有意义,而不是文件夹。

起初我以为我遇到了类似的问题,但后来我重新检查了支票(我把它绑在了一个按钮上),并得到了与当时属性对话框相同的结果。似乎驱动器上的可用空间是一个相当动态的数量 - 如果它是系统驱动器,这并不是非常令人惊讶 - 甚至没有其他海报正确报告的标准,您可能看不到与属性完全相同的数字对话框在运行时报告。

scroll top