getvolumeinformation (kernel32)
Last changed: -213.79.90.226

.
Summary

C# Signature:

[DllImport("Kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
extern static bool GetVolumeInformation(
  string RootPathName,
  StringBuilder VolumeNameBuffer,
  int VolumeNameSize,
  out uint VolumeSerialNumber,
  out uint MaximumComponentLength,
  out uint FileSystemFlags,
  StringBuilder FileSystemNameBuffer,
  int nFileSystemNameSize);

User-Defined Types:

None.

Notes:

The VolumeSerialNumber is not optional with this signature!!!

Tips & Tricks:

If you specify RootPathName as a driveletter (eg not a volume name) then you have to terminate it with a backslash.

Sample Code:

StringBuilder volname = new StringBuilder(256);
StringBuilder fsname = new StringBuilder(256);
uint sernum, maxlen, flags;
if(!GetVolumeInformation("c:\\", volname.Capacity, out sernum, out maxlen, out flags, fsname, fsname.Capacity))
    Marshal.ThrowExceptionForHR(Marshal.GetHRForLastWin32Error());
string volnamestr = volname.ToString();
string fsnamestr = fsname.ToString();

Alternative Managed API:

Do you know one? Please contribute it!

Documentation