先看定义:
BOOL GetVolumeInformation(
[IN] LPCTSTR lpRootPathName, // root directory 卷所在的根目录,如:"C:\\", 如果为NULL,表示当前目录
[OUT] LPTSTR lpVolumeNameBuffer, // volume name buffer ,输出参数,存放卷名缓冲区
[IN] DWORD nVolumeNameSize, // length of name buffer,卷名缓冲区长度
[OUT] LPDWORD lpVolumeSerialNumber, // volume serial number, 卷序列号
[OUT] LPDWORD lpMaximumComponentLength, // maximum file name length,最大文件文件名组件长度,随文件系而变化
[OUT] LPDWORD lpFileSystemFlags, // file system options ,文件系统的一些属性,通常为一些宏的组合
[OUT] LPTSTR lpFileSystemNameBuffer, // file system name buffer,说明何种文件系统,例如NTFS, FAT等
[IN] DWORD nFileSystemNameSize // length of file system name buffer,文件系统缓冲区长度
);
举例说明,拿自己的C盘举例:
char szVolumeNameBuf[MAX_PATH] = {0};
DWORD dwVolumeSerialNum;
DWORD dwMaxComponentLength;
DWORD dwSysFlags;
char szFileSystemBuf[MAX_PATH] = {0};
DWORD dwFileSystemBuf = MAX_PATH;
BOOL bGet = GetVolumeInformationA("C:\\",
szVolumeNameBuf,
MAX_PATH,
&dwVolumeSerialNum,
&dwMaxComponentLength,
&dwSysFlags,
szFileSystemBuf,
MAX_PATH);
printf("%s, %s",szVolumeNameBuf, szFileSystemBuf);
//最后结果: Windwos, NTFS