2009-07-02 6 views
9

Ich muss die Clustergröße der Benutzerfestplatte durch C oder C++ finden. Die Festplatte verwendet NTFS (obwohl ich wissen würde, wie es auch auf anderen Dateisystemen funktioniert).Abrufen der Clustergröße einer Festplatte (über Code)

Ich denke, was ich brauche, ist eine Kombination von win32 API-Aufrufe, aber ich weiß nicht, welche.

Zum Beispiel gibt die Eingabe von "fsutil fsinfo ntfsinfo c:" in der Windows-Konsole "Bytes pro Cluster", was ich brauche. (Obwohl aus offensichtlichen Gründen, ich will nicht, diesen Befehl auszuführen und zu analysieren, es ist ausgegeben.)

+0

Beachten Sie, dass diese Ihnen nicht sagen, eine ganze Menge. Kleine Dateien können im Verzeichnisknoten selbst gespeichert werden. – MSalters

+0

FWIW, wird die Clustergröße eines Dateisystems manchmal auch als "Zuordnungseinheit" bezeichnet, z. B .: http://msdn.microsoft.com/en-us/library/aa383356(VS.85).aspx. – reuben

Antwort

14

Verwenden Sie die GetDiskFreeSpace

BOOL WINAPI GetDiskFreeSpace(
    __in LPCTSTR lpRootPathName, 
    __out LPDWORD lpSectorsPerCluster, // <-- 
    __out LPDWORD lpBytesPerSector, // <-- 
    __out LPDWORD lpNumberOfFreeClusters, 
    __out LPDWORD lpTotalNumberOfClusters 
); 
Verwandte Themen