GetVolumeInformation 获取磁盘卷信息

技术交流
0 814

先看定义: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