如何知道某个磁盘的格式(FAT32或NTFS)

时间:2009-08-10 01:19:49

标签: c++ winapi mfc

我在windows,c ++,mfc下编程 如何通过路径知道磁盘的格式,例如“c:\”。 Windows是否提供此类API?

4 个答案:

答案 0 :(得分:11)

您正在寻找Win32API函数:: GetVolumeInformation。

来自MSDN:

GetVolumeInformation Function

BOOL WINAPI GetVolumeInformation(
    __in_opt   LPCTSTR lpRootPathName,
    __out      LPTSTR lpVolumeNameBuffer,
    __in       DWORD nVolumeNameSize,
    __out_opt  LPDWORD lpVolumeSerialNumber,
    __out_opt  LPDWORD lpMaximumComponentLength,
    __out_opt  LPDWORD lpFileSystemFlags,
    __out      LPTSTR lpFileSystemNameBuffer, // Here
    __in       DWORD nFileSystemNameSize
);

示例:

TCHAR fs [MAX_PATH+1];
::GetVolumeInformation(_T("C:\\"), NULL, 0, NULL, NULL, NULL, &fs, MAX_PATH+1);
// Result is in (TCHAR*) fs

答案 1 :(得分:3)

是的,它是GetVolumeInformation。

TCHAR szVolumeName[100]    = "";
TCHAR szFileSystemName[10] = "";
DWORD dwSerialNumber       = 0;
DWORD dwMaxFileNameLength  = 0;
DWORD dwFileSystemFlags    = 0;

if(::GetVolumeInformation("c:\\",
                            szVolumeName,
                            sizeof(szVolumeName),
                            &dwSerialNumber,
                            &dwMaxFileNameLength,
                            &dwFileSystemFlags,
                            szFileSystemName,
                            sizeof(szFileSystemName)) == TRUE)
  {
    cout << "Volume name = " << szVolumeName << endl
         << "Serial number = " << dwSerialNumber << endl
         << "Max. filename length = " << dwMaxFileNameLength
         << endl
         << "File system flags = $" << hex << dwFileSystemFlags
         << endl
         << "File system name = " << szFileSystemName << endl;
  }

答案 2 :(得分:2)

GetVolumeInformation会为您提供所需的信息。它将在lpFileSystemNameBuffer中返回驱动器格式的名称。

如果你想要一个漂亮的包装器,你可能想看一下微软的CVolumeMaster

答案 3 :(得分:1)

WMI中的Win32_LogicalDisk类具有一个公开该信息的FileSystem属性。