<Return[G]><Top>

GetDiskFreeSpace

Declare Function Api_GetDiskFreeSpace& Lib "kernel32" Alias "GetDiskFreeSpaceA" (ByVal lpRootPathName$, lpSecPerCluster&, lpBytesPerSector&, lpNumberOfFreeCs&, lpTotalNumberOfClusters&)

Declare Function GetDiskFreeSpace Lib "kernel32" Alias "GetDiskFreeSpaceA" (ByVal lpRootPathName As String, lpSectorsPerCluster As Long, lpBytesPerSector As Long, lpNumberOfFreeClusters As Long, lpTotalNumberOfClusters As Long) As Long

ディスクの空き容量など、指定されたディスクに関する情報を取得する。
この関数は、GetDiskFreeSpaceEx 関数に取って代わられた。Win32 ベースの新しいアプリケーションは GetDiskFreeSpaceEx を使う。

パラメータ
lpRootPathName
    情報を取得するべきディスクのルートディレクトリ名を保持している、NULL で終わる文字列へのポインタを指定する。

    NULL を指定すると、カレントディレクトリと同じディスクのルートが指定されたものと見なされる。

    UNC 名を指定する場合、最後に円記号(\)を付ける。

    たとえば、\\MyServer\MyShare を調べたい場合、\\MyServer\MyShare\ という文字列を指定する。

    一方、"C:" のようなドライブ指定の最後に円記号を付ける。
    Windows 95:Windows 95 の最初のリリースは、lpszRootPathName パラメータで UNC 名をサポートしていない。

    UNC パス名に基づいて空きディスク容量を問い合わせるには、一時的に UNC 名をドライブ名へマップし、そのドライブの空きディスク容量を

    問い合わせ、最後にマッピングを削除する。
    Windows 95 OSR2 以降:UNC パス名をサポートしている。
lpSectorsPerCluster
    1 個の変数へのポインタを指定する。関数から制御が返ると、この変数に、クラスタ当たりのセクタ数が格納される。
lpBytesPerSector
    1 個の変数へのポインタを指定する。関数から制御が返ると、この変数に、セクタ当たりのバイト数が格納される。
lpNumberOfFreeClusters
    1 個の変数へのポインタを指定する。関数から制御が返ると、この変数に、呼び出し側スレッドに関連しているユーザーが利用できる、ディ

    スク上の空きクラスタの総数が格納される。
    Windows 2000:ディスククォータが有効になっている場合、この値が、ディスクの空きクラスタの総数より少なくなることがある。
lpTotalNumberOfClusters
    1 個の変数へのポインタを指定する。関数から制御が返ると、この変数に、呼び出し側スレッドに関連しているユーザーが利用できる、ディ

    スク上のクラスタの総数が格納される。
    Windows 2000:ディスククォータが有効になっている場合、この値が、ディスクのクラスタの総数より少なくなることがある。

戻り値
    関数が成功すると、0 以外の値が返る。
    関数が失敗すると、0 が返る。拡張エラー情報を取得するには、GetLastError 関数を使う。

解説
    GetDiskFreeSpace 関数を使った場合は、クラスタ数とセクタサイズに基づいてバイト数を計算する必要がある。GetDiskFreeSpaceEx

    関数を使うと、この計算が不要になる。
    Windows 95:2GB より大きいボリュームに対して GetDiskFreeSpace 関数を使うと、正しくない値を返すことがある。

     この関数は、クラスタの総数を *lpNumberOfFreeClusters へ格納するが、*lpNumberOfFreeClusters は常に 2GB 以下のボリューム

    サイズを報告するからである。
    ボリュームが 2GB 未満の場合でも、*lpSectorsPerCluster、*lpNumberOfFreeClusters、*lpTotalNumberOfClusters の各パラメータ

    に正しくない値が格納されることがある。オペレーティングシステムは、正しいボリュームサイズが得られるように、これらの値を操作する

    からである。
    Windows 95 OSR2 と Windows 98:Windows 95 OSR 2(OEM Service Release 2)以降では、GetDiskFreeSpaceEx 関数が利用でき

    る。そして、できるだけこの関数を使う。GetDiskFreeSpaceEx 関数は、ボリュームが 2GB より大きいときも、正しい値を返す。
    Windows NT と Windows 2000:Windows 2000 も含め、Windows NT 4.0 以降では GetDiskFreeSpaceEx 関数が利用できる。