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);