2009-07-02 6 views
9

CまたはC++を使用して、ユーザーのハードドライブのクラスタサイズを見つける必要があります。ハードドライブはNTFSを使用しています(ただし、他のファイルシステムでも同様に実行されています。ハードドライブのクラスタサイズの取得(コードによる)

私はWin32 APIコールのいくつかの組み合わせが必要だと思いますが、私にはわかりません。

たとえば、Windowsコンソールに「fsutil fsinfo ntfsinfo c:」と入力すると、「クラスタあたりのバイト数」がわかります。これは必要なものです。 (明白な理由のために、私はそのコマンドを実行し、それが出力だ解析する必要はありませんが。)

+0

これはあなたの全体の多くを教えてくれないことに注意してください。小さなファイルは、ディレクトリノード自体に格納することができます。 – MSalters

+0

FWIWでは、ファイルシステムのクラスタサイズは、「割り当て単位」サイズとも呼ばれます(例:http://msdn.microsoft.com/en-us/library/aa383356(VS.85).aspx)。 – reuben

答えて

14

使用GetDiskFreeSpace

BOOL WINAPI GetDiskFreeSpace(
    __in LPCTSTR lpRootPathName, 
    __out LPDWORD lpSectorsPerCluster, // <-- 
    __out LPDWORD lpBytesPerSector, // <-- 
    __out LPDWORD lpNumberOfFreeClusters, 
    __out LPDWORD lpTotalNumberOfClusters 
); 
関連する問題