Как узнать формат определенного диска (это FAT32 или NTFS) - PullRequest
4 голосов
/ 10 августа 2009

Я программирую под Windows, C ++, MFC Как я могу узнать формат диска по пути, например, "C: \". Windows предоставляет такие API?

Ответы [ 4 ]

11 голосов
/ 10 августа 2009

Функция Win32API :: GetVolumeInformation - это то, что вы ищете.

Из MSDN:

Функция GetVolumeInformation

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
3 голосов
/ 10 августа 2009

Да, это 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 голосов
/ 10 августа 2009

GetVolumeInformation даст вам то, что вам нужно. Он вернет имя формата диска в lpFileSystemNameBuffer.

Если вам нужна хорошая обертка, вы можете посмотреть на CVolumeMaster .

от Microsoft.
1 голос
/ 10 августа 2009

Класс Win32_LogicalDisk в WMI имеет свойство FileSystem, которое предоставляет эту информацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...