我需要找到驱动器中的可用空间,我有以下代码,但不知道如何将其隐藏成百分比,

 QString drive = "C:/";
 LPCTSTR         lpDirectoryName = (const wchar_t*)drive.utf16();
 ULARGE_INTEGER lpFreeBytesAvailable;
 ULARGE_INTEGER lpTotalNumberOfBytes;
 ULARGE_INTEGER lpTotalNumberOfFreeBytes;
 BOOL  val =  GetDiskFreeSpaceEx(lpDirectoryName,&lpFreeBytesAvailable,&lpTotalNumberOfBytes,&lpTotalNumberOfFreeBytes);


谁能帮我解决这个问题?

提前致谢,
哈里斯

最佳答案

考虑到用户配额(推荐),您应该执行以下操作:

double percent_free = 100.0 *(double)lpFreeBytesAvailable.QuadPart / (double)lpTotalNumberOfBytes.QuadPart


如果禁用了用户配额(大多数系统),则将使用整个驱动器。

请注意,您的代码将仅在Unicode构建中进行编译。最好将其编写为:

BOOL val =  GetDiskFreeSpaceEx(_T("C:/"),&lpFreeBytesAvailable,&lpTotalNumberOfBytes,&lpTotalNumberOfFreeBytes);

10-04 13:47