GetVolumeInformationByHandleW 函式 (fileapi.h)

擷取與指定檔案相關聯的檔案系統和磁片區相關資訊。

若要擷取檔案或目錄的目前壓縮狀態,請使用 FSCTL_GET_COMPRESSION

語法

BOOL GetVolumeInformationByHandleW(
  [in]            HANDLE  hFile,
  [out, optional] LPWSTR  lpVolumeNameBuffer,
  [in]            DWORD   nVolumeNameSize,
  [out, optional] LPDWORD lpVolumeSerialNumber,
  [out, optional] LPDWORD lpMaximumComponentLength,
  [out, optional] LPDWORD lpFileSystemFlags,
  [out, optional] LPWSTR  lpFileSystemNameBuffer,
  [in]            DWORD   nFileSystemNameSize
);

參數

[in] hFile

檔案的控制碼。

[out, optional] lpVolumeNameBuffer

接收指定磁片區名稱之緩衝區的指標。 緩衝區大小上限為 MAX_PATH+1

[in] nVolumeNameSize

WCHARs 中磁片區名稱緩衝區的長度。 緩衝區大小上限為 MAX_PATH+1

如果未提供磁片區名稱緩衝區,則會忽略此參數。

[out, optional] lpVolumeSerialNumber

接收磁片區序號之變數的指標。

如果不需要序號,此參數可以是 Null

此函式會傳回作業系統在格式化硬碟時所指派的磁片區序號。 若要以程式設計方式取得製造商指派的硬碟序號,請使用 Windows Management Instrumentation (WMI) Win32_PhysicalMedia 屬性 SerialNumber

[out, optional] lpMaximumComponentLength

變數的指標,該變數會接收指定檔案系統支援的檔案名元件的最大長度 WCHAR

檔案名元件是反斜線之間的檔案名部分。

儲存在 *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
指定的磁片區支援重新剖析點。
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 Vista 和 Windows Server 2008: 不支援此值。

FILE_SUPPORTS_EXTENDED_ATTRIBUTES
0x00800000
指定的磁片區支援擴充屬性。 擴充屬性是應用程式可以與檔案建立關聯的應用程式特定中繼資料片段,而且不屬於檔案的資料。

Windows Vista 和 Windows Server 2008: 不支援此值。

FILE_SUPPORTS_OPEN_BY_FILE_ID
0x01000000
檔案系統支援由 FileID 開啟。 如需詳細資訊,請參閱 FILE_ID_BOTH_DIR_INFO

Windows Vista 和 Windows Server 2008: 不支援此值。

FILE_SUPPORTS_USN_JOURNAL
0x02000000
指定的磁片區支援 (USN) 日誌的更新序號。 如需詳細資訊,請參閱 變更日誌記錄

Windows Vista 和 Windows Server 2008: 不支援此值。

FILE_SUPPORTS_BLOCK_REFCOUNTING
0x08000000
指定的磁片區支援在相同磁片區上的檔案之間共用邏輯叢集。 檔案系統會重新配置共用叢集的寫入。 表示FSCTL_DUPLICATE_EXTENTS_TO_FILE是支援的作業。

[out, optional] lpFileSystemNameBuffer

接收檔案系統名稱的緩衝區指標,例如 FAT 檔案系統或 NTFS 檔案系統。 緩衝區大小是由 nFileSystemNameSize 參數所指定。

[in] nFileSystemNameSize

WCHARs 中檔案系統名稱緩衝區的長度。 緩衝區大小上限為 MAX_PATH+1

如果未提供檔案系統名稱緩衝區,則會忽略此參數。

傳回值

如果擷取所有要求的資訊,傳回值為非零。

如果未擷取所有要求的資訊,傳回值為零。 若要取得擴充的錯誤資訊,請呼叫 GetLastError

備註

在 Windows 8 和 Windows Server 2012 中,下列技術支援此函式。

技術 支援
伺服器訊息區 (SMB) 3.0 通訊協定
SMB 3.0 透明容錯移轉 (TFO)
具有向外延展檔案共用的 SMB 3.0 (SO)
叢集共用磁片區檔案系統 (CsvFS)
彈性檔案系統 (ReFS)

SMB 不支援磁片區管理功能。

需求

   
最低支援的用戶端 Windows Vista [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2008 [僅限傳統型應用程式]
目標平台 Windows
標頭 fileapi.h (包含 Windows.h)
程式庫 Kernel32.lib
DLL Kernel32.dll

另請參閱

關於 KTM

檔案加密

GetCompressedFileSize

GetFileAttributes

GetVolumeInformation

SetErrorMode

SetVolumeLabel

磁片區管理功能