我在Windows下編程,C++,MFC 我怎麼能知道通過路徑磁盤的格式,如「C:\」。 Windows提供這樣的API嗎?如何知道某個磁盤格式(是FAT32或NTFS)
4
A
回答
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
2
GetVolumeInformation會給你你所需要的。它將在lpFileSystemNameBuffer中返回驅動器格式的名稱。
如果你想圍繞它一個很好的包裝,你可能想看看微軟的CVolumeMaster。
1
在WMI Win32_LogicalDisk類具有暴露該信息的文件系統屬性。
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;
}
相關問題
- 1. C++知道如果磁盤/ USB是FAT32格式與低級別的Io代碼
- 2. 如何計算NTFS磁盤的容量
- 3. 如何知道未安裝磁盤的磁盤使用情況?
- 4. 如何獲得FAT16或FAT32或NTFS文件系統在Linux上
- 5. 把它格式化爲Ext4之後恢復NTFS磁盤
- 6. 如何知道磁盤是基本的還是動態的?
- 7. 如何知道某個文件是否來自Apache POI的.docx或.doc格式
- 8. 顯示fat32 usb磁盤的卷標?
- 9. 如何檢測USB驅動器是NTFS還是FAT32 in objective-c
- 10. 什麼是MS-DOS FAT32格式和Windows FAT32格式
- 11. fstab ntfs-3g磁盤atime不工作
- 12. 如何查找磁盤卷的格式
- 13. 如何備份LIF格式化磁盤?
- 14. 這是掃描FAT32磁盤中文件的最快方法嗎?
- 15. 如何知道「路徑」是否位於FAT32分區中?
- 16. NTFS-壓縮虛擬PC磁盤(主機和/或客戶)
- 17. 磁盤使用格式
- 18. 如何查詢C#中的NTFS磁盤配額?
- 19. 如何確定NTFS磁盤上分配的塊
- 20. 「fat32 clients」或「fat32 applications」是什麼意思?
- 21. 在java中識別磁盤類型的文件系統格式,如ntfs,fat16/32或ext
- 22. 如何計算加盟費用?我想知道磁盤操作?
- 23. 檢查ntfs磁盤是否與cygwin掛接
- 24. 磁盤計數器表格格式
- 25. 不知道如何讓mod_rewrite寫入某種格式
- 26. 如何獲取便攜式磁盤的磁盤大小?
- 27. 爲什麼FAT32磁盤限制爲4GB文件?
- 28. 如何知道某個類是來自JRE還是外部Jar?
- 29. 我如何知道某個班是助手還是服務?
- 30. 如何以編程方式運行格式化磁盤?
GetVolumeInformation()可以告訴你。 (請記住NTFS/FAT *在Windows中不唯一的文件系統,即使壽他們是支持開箱即用的唯一) – Anders 2009-08-10 17:20:10