共用方式為


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_COMPRESSIONFILE_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 支援重新剖析點,但無法編製索引,因此 FindFirstVolumeMountPointFindNextVolumeMountPoint 將無法如預期般運作。
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_COMPRESSIONFILE_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

另請參閱

關於 KTM

檔案加密

GetCompressedFileSize

GetFileAttributes

GetVolumeInformationByHandleW

SetErrorMode

SetVolumeLabel

磁碟區管理功能