我需要在驱动器中找到可用空间,我有以下代码,但不知道如何将其转换为百分比,
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);
任何人都可以帮我解决这个问题吗?
提前致谢, 哈里斯
答案 0 :(得分:1)
考虑到用户配额(推荐),您应该执行以下操作:
double percent_free = 100.0 *(double)lpFreeBytesAvailable.QuadPart / (double)lpTotalNumberOfBytes.QuadPart
如果禁用了用户配额(大多数系统),则此stil会在使用整个驱动器时生效。
请注意,您的代码只能在Unicode版本中编译。最好把它写成:
BOOL val = GetDiskFreeSpaceEx(_T("C:/"),&lpFreeBytesAvailable,&lpTotalNumberOfBytes,&lpTotalNumberOfFreeBytes);