[DllImport("kernel32.dll")]
private static extern int GetVolumeInformation(
string lpRootPathName,
string lpVolumeNameBuffer,
int nVolumeNameSize,
ref int lpVolumeSerialNumber,
int lpMaximumComponentLength,
int lpFileSystemFlags,
string lpFileSystemNameBuffer,
int nFileSystemNameSize
);
以上是此函数原型
为方便使用,稍微包装一下:
public static string GetDriverNumber(string driver)
{
const int MAX_FILENAME_LEN = 256;
int retVal = 0;
GetVolumeInformation(
driver + @":\",
null,
MAX_FILENAME_LEN,
ref retVal,
0,
0,
null,
MAX_FILENAME_LEN
);
return retVal.ToString("X");
}
这个API中的各参数意义应该能望文生意了(提示一下,那个 ref 的整型变量里就存放着SerialNumber,
系统用唯一的一个整数类型来标识各个分区盘(可以是负数)
包装后的GetDriverNumber函数更适合在C#中使用 GetDriverNumber("C"), GetDriverNumber("D")