我想用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。
此外,我不知道该硬盘驱动器的所有逻辑驱动器。
我想用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。
此外,我不知道该硬盘驱动器的所有逻辑驱动器。
非WMI ay要容易得多。
您可以使用GetLogicalDriveStrings
(https://msdn.microsoft.com/en-us/library/windows/desktop/aa364975(v=vs.85).aspx)来获取系统中的所有驱动器。
下一页使用GetDiskFreeSpace
(https://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_LogicalDisk
(https://msdn.microsoft.com/en-us/library/windows/desktop/aa394173(v=vs.85).aspx)类的工作。
你对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; } –