2016-04-26 18 views
0

私はC++とWMIを使ってハードドライブ全体の空き容量を計算したいと思います。C++でWMIを使用してハードディスクのすべての論理ドライブの空き領域を取得するにはどうすればよいですか?

たとえば、 HDDにC:、D:、E: という3つの論理ドライブがあり、各論理ドライブの構成が以下の場合。

ドライブ総容量フリースペース

C:10ギガバイト5ギガバイト D:20ギガバイト8ギガバイト E:15ギガバイト7ギガバイト

だから私は、すなわちすべてのドライブの空き領域をハードドライブ空き容量を取得する必要があります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を使用して空きHDD容量を取得していますが、若干異なる値が表示されています。以下は私が使用しているコードです。 intメイン(無効) { 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; } –