将可用空间转换为Windows C ++百分比

时间:2015-06-27 14:51:40

标签: c++ windows qt winapi

我需要在驱动器中找到可用空间,我有以下代码,但不知道如何将其转换为百分比,

 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);

任何人都可以帮我解决这个问题吗?

提前致谢, 哈里斯

1 个答案:

答案 0 :(得分:1)

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

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

如果禁用了用户配额(大多数系统),则此stil会在使用整个驱动器时生效。

请注意,您的代码只能在Unicode版本中编译。最好把它写成:

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