GetVolumeInformationA 函式 (fileapi.h)
擷取與指定根目錄相關聯的文件系統和磁碟區相關信息。
若要在擷取此資訊時指定句柄,請使用 GetVolumeInformationByHandleW 函式。
若要擷取檔案或目錄的目前壓縮狀態,請使用 FSCTL_GET_COMPRESSION。
語法
BOOL GetVolumeInformationA(
[in, optional] LPCSTR lpRootPathName,
[out, optional] LPSTR lpVolumeNameBuffer,
[in] DWORD nVolumeNameSize,
[out, optional] LPDWORD lpVolumeSerialNumber,
[out, optional] LPDWORD lpMaximumComponentLength,
[out, optional] LPDWORD lpFileSystemFlags,
[out, optional] LPSTR lpFileSystemNameBuffer,
[in] DWORD nFileSystemNameSize
);
參數
[in, optional] lpRootPathName
字串的指標,其中包含要描述之磁碟區的根目錄。
如果此參數 NULL,則會使用目前目錄的根目錄。 需要尾端反斜杠。 例如,您會將 \\MyServer\MyShare 指定為 “\\MyServer\MyShare\”,或將 C 磁盘驅動器指定為 “C:\”。
[out, optional] lpVolumeNameBuffer
接收指定磁碟區名稱之緩衝區的指標。 緩衝區大小是由 nVolumeNameSize 參數所指定。
[in] nVolumeNameSize
磁碟區名稱緩衝區的長度,TCHAR。 緩衝區大小上限為 s+1 MAX_PATH。
如果未提供磁碟區名稱緩衝區,則會忽略此參數。
[out, optional] lpVolumeSerialNumber
接收磁碟區序號之變數的指標。
如果不需要序號,則可以 NULL 此參數。
此函式會傳回作業系統格式化硬碟時所指派的磁碟區序號。 若要以程式設計方式取得製造商指派的硬碟序號,請使用 Windows Management Instrumentation (WMI) Win32_PhysicalMedia 属性 SerialNumber。
[out, optional] lpMaximumComponentLength
變數的指標,其接收指定文件系統支援的檔名元件,TCHAR的最大長度。
檔名元件是反斜杠之間檔名的部分。
儲存在 *lpMaximumComponentLength 指向 的變數中,用來指出指定的檔案系統支持長名稱。 例如,對於支持長名稱的 FAT 檔案系統,函式會儲存值 255,而不是先前的 8.3 指標。 使用 NTFS 檔案系統的系統上也可以支援長名稱。
[out, optional] lpFileSystemFlags
接收與指定文件系統相關聯之旗標之變數的指標。
此參數可以是下列一或多個旗標。 不過,FILE_FILE_COMPRESSION 和 FILE_VOL_IS_COMPRESSED 互斥。
價值 | 意義 |
---|---|
FILE_CASE_SENSITIVE_SEARCH 0x00000001 |
指定的磁碟區支援區分大小寫的檔名。 |
FILE_CASE_PRESERVED_NAMES 0x00000002 |
指定的磁碟區支援在磁碟上放置名稱時保留的檔案名大小寫。 |
FILE_UNICODE_ON_DISK 0x00000004 |
指定的磁碟區支援檔名中的 Unicode,因為它們出現在磁碟上。 |
FILE_PERSISTENT_ACLS 0x00000008 |
指定的磁碟區會保留並強制執行訪問控制清單(ACL)。 例如,NTFS 檔案系統會保留並強制執行 ACL,而 FAT 檔案系統則不會。 |
FILE_FILE_COMPRESSION 0x00000010 |
指定的磁碟區支援以檔案為基礎的壓縮。 |
FILE_VOLUME_QUOTAS 0x00000020 |
指定的磁碟區支援磁碟配額。 |
FILE_SUPPORTS_SPARSE_FILES 0x00000040 |
指定的磁碟區支援疏鬆檔案。 |
FILE_SUPPORTS_REPARSE_POINTS 0x00000080 |
指定的磁碟區支援重新分析點。 ReFS: ReFS 支援重新剖析點,但無法編製索引,因此 FindFirstVolumeMountPoint 和 FindNextVolumeMountPoint 將無法如預期般運作。 |
FILE_SUPPORTS_REMOTE_STORAGE 0x00000100 |
檔案系統支援遠端記憶體。 |
FILE_RETURNS_CLEANUP_RESULT_INFO 0x00000200 |
在成功的清除作業上,文件系統會傳回資訊,描述清除期間所採取的其他動作,例如刪除檔案。 檔系統篩選器可以在其清除後回呼中檢查這項資訊。 |
FILE_SUPPORTS_POSIX_UNLINK_RENAME 0x00000400 |
檔案系統支援 POSIX 樣式的刪除和重新命名作業。 |
FILE_VOLUME_IS_COMPRESSED 0x00008000 |
指定的磁碟區是壓縮的磁碟區,例如 DoubleSpace 磁碟區。 |
FILE_SUPPORTS_OBJECT_IDS 0x00010000 |
指定的磁碟區支援物件識別碼。 |
FILE_SUPPORTS_ENCRYPTION 0x00020000 |
指定的磁碟區支援加密檔案系統 (EFS)。 如需詳細資訊,請參閱 檔案加密。 |
FILE_NAMED_STREAMS 0x00040000 |
指定的磁碟區支援具名數據流。 |
FILE_READ_ONLY_VOLUME 0x00080000 |
指定的磁碟區是唯讀的。 |
FILE_SEQUENTIAL_WRITE_ONCE 0x00100000 |
指定的磁碟區支援單一循序寫入。 |
FILE_SUPPORTS_TRANSACTIONS 0x00200000 |
指定的磁碟區支援交易。 如需詳細資訊,請參閱 關於 KTM。 |
FILE_SUPPORTS_HARD_LINKS 0x00400000 |
指定的磁碟區支援硬式連結。 如需詳細資訊,請參閱 硬式連結和連接。 Windows Server 2008、Windows Vista、Windows Server 2003 和 Windows XP: 在 Windows Server 2008 R2 和 Windows 7 之前不支援此值。 |
FILE_SUPPORTS_EXTENDED_ATTRIBUTES 0x00800000 |
指定的磁碟區支援擴充屬性。 擴充屬性是應用程式特定元數據的片段,應用程式可以與檔案產生關聯,且不屬於檔案數據的一部分。 Windows Server 2008、Windows Vista、Windows Server 2003 和 Windows XP: 在 Windows Server 2008 R2 和 Windows 7 之前不支援此值。 |
FILE_SUPPORTS_OPEN_BY_FILE_ID 0x01000000 |
檔系統支援由 FileID 開啟。 如需詳細資訊,請參閱 FILE_ID_BOTH_DIR_INFO。 Windows Server 2008、Windows Vista、Windows Server 2003 和 Windows XP: 在 Windows Server 2008 R2 和 Windows 7 之前不支援此值。 |
FILE_SUPPORTS_USN_JOURNAL 0x02000000 |
指定的磁碟區支援更新序號 (USN) 紀錄。 如需詳細資訊,請參閱 變更記錄。 Windows Server 2008、Windows Vista、Windows Server 2003 和 Windows XP: 在 Windows Server 2008 R2 和 Windows 7 之前不支援此值。 |
FILE_SUPPORTS_INTEGRITY_STREAMS 0x04000000 |
檔系統支援 |
FILE_SUPPORTS_BLOCK_REFCOUNTING 0x08000000 |
指定的磁碟區支援在相同磁碟區上的檔案之間共用邏輯叢集。 檔系統會重新配置寫入至共用叢集。 表示 FSCTL_DUPLICATE_EXTENTS_TO_FILE 為支持的作業。 |
FILE_SUPPORTS_SPARSE_VDL 0x10000000 |
檔案系統會追蹤檔案的每個叢集是否包含有效的數據(無論是從明確的檔案寫入或自動零),還是無效的數據(尚未寫入或零)。 使用疏鬆有效數據長度的文件系統不會儲存有效的數據長度,也不需要在檔案中連續有效數據。 |
FILE_DAX_VOLUME 0x20000000 |
指定的磁碟區是直接存取 (DAX) 磁碟區。 附注: 此旗標是在 Windows 10 版本 1607 中引進的。 |
FILE_SUPPORTS_GHOSTING 0x40000000 |
檔案系統支援准刪除。 |
[out, optional] lpFileSystemNameBuffer
接收檔案系統名稱之緩衝區的指標,例如 FAT 檔案系統或 NTFS 檔案系統。 緩衝區大小是由 nFileSystemNameSize 參數所指定。
[in] nFileSystemNameSize
檔案系統名稱緩衝區的長度,TCHAR。 緩衝區大小上限 MAX_PATH+1。
如果未提供文件系統名稱緩衝區,則會忽略此參數。
傳回值
如果擷取所有要求的資訊,則傳回值為非零值。
如果未擷取所有要求的資訊,則傳回值為零。 若要取得擴充的錯誤資訊,請呼叫 GetLastError。
言論
當用戶嘗試取得沒有軟碟的磁碟驅動器或沒有光碟的 CD-ROM 磁碟驅動器的相關信息時,系統會分別顯示消息框供使用者插入磁碟或光碟。 若要防止系統顯示此消息框,請使用 SEM_FAILCRITICALERRORS呼叫 SetErrorMode 函式。
FILE_VOL_IS_COMPRESSED 旗標是唯一以磁碟區為基礎的壓縮指標。 文件系統名稱不會改變以表示壓縮,例如,此旗標會在 DoubleSpace 磁碟區上設定。 當壓縮是以磁碟區為基礎時,會壓縮或未壓縮整個磁碟區。
FILE_FILE_COMPRESSION 旗標會指出文件系統是否支援以檔案為基礎的壓縮。 壓縮是以檔案為基礎時,可以壓縮或無法壓縮個別檔案。
FILE_FILE_COMPRESSION 和 FILE_VOL_IS_COMPRESSED 旗標互斥。 無法傳回這兩個位。
儲存在 lpMaximumComponentLength 中的最大元件長度值是磁碟區支援較長的 FAT 檔案系統(或其他文件系統)檔名的唯一指標。 檔案系統名稱不會改變,表示支援長檔名。
GetCompressedFileSize 函式會取得檔案的壓縮大小。 GetFileAttributes 函式可以判斷是否壓縮個別檔案。
符號連結行為
如果路徑指向符號連結,函式會傳回目標的磁碟區資訊。
從 Windows 8 和 Windows Server 2012 開始,下列技術支援此功能。
科技 | 支援 |
---|---|
伺服器消息塊 (SMB) 3.0 通訊協定 | 不 |
SMB 3.0 透明故障轉移 (TFO) | 不 |
具有向外延展檔案共用的SMB 3.0(SO) | 不 |
叢集共用磁碟區檔案系統 (CsvFS) | 是的 |
復原檔案系統 (ReFS) | 是的 |
SMB 不支援磁碟區管理功能。
交易作業
如果磁碟區支援文件系統交易,函式會傳回 lpFileSystemFlags中的 FILE_SUPPORTS_TRANSACTIONS。
注意
fileapi.h 標頭會將 GetVolumeInformation 定義為別名,根據 UNICODE 預處理器常數的定義,自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程序代碼,可能會導致編譯或運行時間錯誤不符。 如需詳細資訊,請參閱函式原型的
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | Windows XP [傳統型應用程式 |UWP 應用程式] |
支援的最低伺服器 | Windows Server 2003 [傳統型應用程式 |UWP 應用程式] |
目標平臺 | 窗戶 |
標頭 | fileapi.h (包括 Windows.h) |
連結庫 | Kernel32.lib |
DLL | Kernel32.dll |