2016-04-26 75 views
0

我想用C++和WMI计算整个硬盘的可用空间。如何使用C++中的WMI获得硬盘的所有逻辑驱动器的可用空间?

例如。 如果硬盘驱动器包含3个逻辑驱动器,请说C:,D:,E: ,每个逻辑驱动器的配置如下。

驱动器总空间可用空间

C:10GB 5 GB d:20GB 8 GB E:15GB 7 GB

所以,我需要即取可用硬盘空间的所有驱动器的可用空间C,D和E.

因此它应该返回5 + 8 + 7 = 20 GB。

此外,我不知道该硬盘驱动器的所有逻辑驱动器。

回答

0

非WMI ay要容易得多。

您可以使用GetLogicalDriveStringshttps://msdn.microsoft.com/en-us/library/windows/desktop/aa364975(v=vs.85).aspx)来获取系统中的所有驱动器。

下一页使用GetDiskFreeSpacehttps://msdn.microsoft.com/en-us/library/windows/desktop/aa364935(v=vs.85).aspx)查找特定的驱动器的可用空间。

如果哟真的想(要)坚持WMI,https://msdn.microsoft.com/en-us/library/windows/desktop/aa393244(v=vs.85).aspx页面会给出如何实例化WMI类的一些方向,你将需要具有FreeSpace成员Win32_LogicalDiskhttps://msdn.microsoft.com/en-us/library/windows/desktop/aa394173(v=vs.85).aspx)类的工作。

+0

你对GetDiskFreeSpaceEx windows API有什么想法,我正在使用这个API来获得免费的硬盘空间。但是我得到的是稍微不同的值。下面是我使用它的代码。 int main(void) { LPCWSTR pszDrive = NULL; BOOL测试,fResult; __int64 lpFreeBytesAvailable,lpTotalNumberOfBytes,lpTotalNumberOfFreeBytes; DWORD dwSectPerClust,dwBytesPerSect,dwFreeClusters,dwTotalClusters; 测试= GetDiskFreeSpaceEx( pszDrive, (PULARGE_INTEGER)lpFreeBytesAvailable, (PULARGE_INTEGER)lpTotalNumberOfBytes, (PULARGE_INTEGER)lpTotalNumberOfFreeBytes ); return 0; } –

相关问题