我需要找到驱动器中的可用空间,我有以下代码,但不知道如何将其隐藏成百分比,
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);