using System.Runtime.InteropServices;
namespace WinFormsApp1
{
public partial class Form1 : Form
{
[DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Auto)]
static extern bool GetDiskFreeSpaceEx(string lpDirectoryName,
out ulong lpFreeBytesAvailable,
out ulong lpTotalNumberOfBytes,
out ulong lpTotalNumberOfFreeBytes);
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
ulong freeBytesAvailable;
ulong totalNumOfBytes;
ulong totalNumOfFreeBytes;
if (!GetDiskFreeSpaceEx("C:\\", out freeBytesAvailable, out totalNumOfBytes, out totalNumOfFreeBytes))
{
Console.Error.WriteLine("GetDiskFreeSpaceEx Error");
}
else
{
label1.Text = "";
label1.Text += "Available bytes: " + string.Format("{0:n}", freeBytesAvailable) + Environment.NewLine;
label1.Text += "Total # of bytes: " + string.Format("{0:n}", totalNumOfBytes) + Environment.NewLine;
label1.Text += "Total free bytes: " + string.Format("{0:n}", totalNumOfFreeBytes) + Environment.NewLine;
}
}
}
}
/*
* run:
*
* Available bytes: 541,480,148,992.00
* Total # of bytes: 999,559,262,208.00
* Total free bytes: 541,480,148,992.00
*
*/