2016-04-26 4 views
0

Ich möchte freien Speicherplatz der gesamten Festplatte mit C++ und WMI berechnen.Wie erhält man mit WMI in C++ freien Speicherplatz auf allen logischen Festplattenlaufwerken?

Zum Beispiel. Wenn HDD 3 logische Laufwerke enthält sagen C:, D:, E: und jedes logische Laufwerk hat unter Konfiguration.

Laufwerk Total Space Free Space

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

Also muß ich die freien Festplattenspeicher, dh freie Speicherplatz aller Laufwerke holen C, D und E.

SO sollte es 5 + 8 + 7 = 20 GB zurückgeben.

Auch ich weiß nicht, was alle logischen Laufwerke für diese Festplatte existiert.

Antwort

0

Die nicht WMI ay ist viel einfacher.

Sie können GetLogicalDriveStrings (https://msdn.microsoft.com/en-us/library/windows/desktop/aa364975(v=vs.85).aspx) verwenden, um alle Laufwerke im System zu erhalten.

Nächste Verwendung GetDiskFreeSpace (https://msdn.microsoft.com/en-us/library/windows/desktop/aa364935(v=vs.85).aspx), um den freien Speicherplatz eines bestimmten Laufwerks zu finden.

Wenn yo wirklich wollen (müssen), halten Sie sich an WMI, die Seite https://msdn.microsoft.com/en-us/library/windows/desktop/aa393244(v=vs.85).aspx werden einige Anweisungen geben, wie WMI-Klassen instanziieren, und Sie werden mit dem Win32_LogicalDisk (https://msdn.microsoft.com/en-us/library/windows/desktop/aa394173(v=vs.85).aspx) Klasse arbeiten müssen, die ein FreeSpace Mitglied hat.

+0

Haben Sie eine Idee auf GetDiskFreeSpaceEx Windows API. Ich benutze diese API, um den freien HDD-Raum zu bekommen. Aber ich bekomme leichte andere Werte. Unten ist der Code, den ich benutze. Int Haupt (leer) { LPCWSTR pszDrive = NULL; BOOL-Test, fResult; __int64 lpFreeBytesAvailable, lpTotalNumberOfBytes, lpTotalNumberOfFreeBytes; DWORD dwSectPerClust, dwBytesPerSect, dwFreeClusters, dwTotalClusters; test = GetDiskFreeSpaceEx ( pszDrive, (PULARGE_INTEGER) & lpFreeBytesAvailable, (PULARGE_INTEGER) & lpTotalNumberOfBytes, (PULARGE_INTEGER) & lpTotalNumberOfFreeBytes ); Rückgabe 0; } –

Verwandte Themen