我在windows,c ++,mfc下编程 如何通过路径知道磁盘的格式,例如“c:\”。 Windows是否提供此类API?
答案 0 :(得分:11)
您正在寻找Win32API函数:: GetVolumeInformation。
来自MSDN:
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属性。