簡體   English   中英

如何知道某個磁盤的格式(FAT32或NTFS)

[英]How to know a certain disk's format(is FAT32 or NTFS)

我正在windows,c ++,mfc下編程我怎樣才能通過路徑知道磁盤的格式,例如“c:\\”。 Windows是否提供此類API?

您正在尋找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

是的,它是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;
  }

GetVolumeInformation將為您提供所需。 它將在lpFileSystemNameBuffer中返回驅動器格式的名稱。

如果你想要一個漂亮的包裝器,你可能想看看微軟的CVolumeMaster

WMI中的Win32_LogicalDisk類具有公開該信息的FileSystem屬性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM