GetDiskFreeSpaceEx (kernel32)
Last changed: -99.73.181.230

.
Summary
Retrieves information about the amount of space available on a disk volume.

C# Signature:

[DllImport("kernel32.dll", SetLastError=true, CharSet=CharSet.Auto)]
[return: MarshalAs(UnmanagedType.Bool)]
   static extern bool GetDiskFreeSpaceEx(string lpDirectoryName,
   out ulong lpFreeBytesAvailable,
   out ulong lpTotalNumberOfBytes,
   out ulong lpTotalNumberOfFreeBytes);

User-Defined Types:

None.

Notes:

On a Pocket PC it is NOT in kernel32.dll, instead you should use:

[DllImport("coredll.dll")]

Tips & Tricks:

On a Pocket PC if you pass lpDirectoryName as null you will get the devices available storage space.

Sample Code:

ulong FreeBytesAvailable;
ulong TotalNumberOfBytes;
ulong TotalNumberOfFreeBytes;

GetDiskFreeSpaceEx("C:\\", out FreeBytesAvailable, out TotalNumberOfBytes,
          out TotalNumberOfFreeBytes);

Console.WriteLine("Free Bytes Available:      {0,15:D}", FreeBytesAvailable);
Console.WriteLine("Total Number Of Bytes:     {0,15:D}", TotalNumberOfBytes);
Console.WriteLine("Total Number Of FreeBytes: {0,15:D}", TotalNumberOfFreeBytes);

Alternative Managed API:

Starting in v2.0 (Whidbey) of the .NET Framework, this is exposed through the System.Io.DriveInfo class.

Documentation