2016-04-26 63 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; } –

相關問題