<Return[G]><Top>

GetDiskFreeSpaceEx

Declare Function Api_GetDiskFreeSpaceEx& Lib "kernel32" Alias "GetDiskFreeSpaceExA" (ByVal lpDirectoryName$, lpFreeBytesAvailableToCaller As ULARGE_INTEGER, lpTotalNumberOfBytes As ULARGE_INTEGER, lpTotalNumberOfFreeBytes As ULARGE_INTEGER)

Declare Function GetDiskFreeSpaceEx Lib "kernel32" Alias "GetDiskFreeSpaceExA" (ByVal lpRootPathName As String, lpFreeBytesAvailableToCaller As LARGE_INTEGER, lpTotalNumberOfBytes As LARGE_INTEGER, lpTotalNumberOfFreeBytes As LARGE_INTEGER) As Long

指定されたディスクの容量に関する情報を取得する。ディスク全体の容量、全体の空き容量、呼び出し側スレッドに関連するユーザーが利用できる空き容量を取得する。

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

    UNC 名を使うこともできる。UNC 名を指定する場合、最後に円記号(\)を付ける。

    たとえば、\\MyServer\MyShare を調べたい場合、\\MyServer\MyShare\ という文字列を指定する。
    NULL を指定すると、カレントディレクトリのあるディスクが指定されたものと見なされる。
    パラメータで、ディスクのルートディレクトリを指定する必要がないことに注意すること。

    この関数は、ディスク上の任意のディレクトリを受け付ける。
lpFreeBytesAvailable
    ULARGE_INTEGER 型の 1 個の変数へのポインタを指定する。関数から制御が返ると、この構造体に、呼び出し側スレッドに関連する

    ユーザーが利用できるディスクの空きバイト数が格納される。
    Windows 2000:ディスククォータが有効になっている場合、この値が、ディスク全体の空きバイト数より小さな値になることがある。
lpTotalNumberOfBytes
    ULARGE_INTEGER 型の 1 個の変数へのポインタを指定する。

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

    関数から制御が返ると、この構造体に、ディスクの空きバイト数が格納される。
    この情報が不要な場合、NULL を指定できる。

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

解説
    この関数が取得するすべての値は、ULARGE_INTEGER 型、つまり 64 ビットである。32 ビットへの切り捨てを行わないよう注意する。
    Windows NT と Windows 2000:Windows 2000 も含め、Windows NT 4.0 以降では GetDiskFreeSpaceEx 関数が利用できる。
    Windows 95 OSR 2 と Windows 98:Windows 95 OSR 2(OEM Service Release 2)以降では、GetDiskFreeSpaceEx 関数が利用で

    きる。
    GetDiskFreeSpaceEx 関数が利用できるかどうかを実行時に判断するには、GetModuleHandle 関数を呼び出し、Kernel32.dll のハンドル

    を取得する。次に、GetProcAddress 関数を呼び出す。