El siguiente método muestra como obtener la cantidad de espacio disponible en una unidad de disco. Se usa el método del Kernel32: GetDiskFreeSpaceEx.

Si el método retorna falso, es porque hubo una excepción al llamarlo o no el usuario actual no tiene acceso de lectura a esa unidad.

Los tres parámetros de salida son los que nos dan la información del disco en Bytes que son: el espacio disponible en disco para el usuario actual, Tamaño total  y espacio libre.

[DllImport("kernel32.dll", CharSet=CharSet.Auto, SetLastError=true)]
internal static extern bool GetDiskFreeSpaceEx(string drive, 
    out long freeBytesForUser, 
    out long totalBytes, 
    out long freeBytes);