共用方式為


GetCompressedFileSizeA 函式 (fileapi.h)

擷取用來儲存指定檔案的實際磁碟記憶體位元組數目。 如果檔案位於支援壓縮的磁碟區上,而且檔案已壓縮,則取得的值會是指定檔案的壓縮大小。 如果檔案位於支援疏鬆檔案的磁碟區上,且檔案是疏鬆檔案,則取得的值會是指定檔案的疏鬆大小。

若要以交易作業的形式執行這項作業,請使用 GetCompressedFileSizeTransacted 函式。

語法

DWORD GetCompressedFileSizeA(
  [in]            LPCSTR  lpFileName,
  [out, optional] LPDWORD lpFileSizeHigh
);

參數

[in] lpFileName

檔名。

請勿在看不見的裝置上指定檔名,例如管道或通訊裝置,因為它的檔案大小沒有意義。

此參數可能包含路徑。

根據預設,名稱限製為MAX_PATH個字元。 若要將此限制延伸至 32,767 寬字元,請在路徑前面加上 “\\?\”。 如需詳細資訊,請參閱 命名檔案、路徑和命名空間

提示

從 Windows 10 版本 1607 開始,您可以選擇移除MAX_PATH限制,而不需預先加上 “\\?\”。 如需詳細資訊,請參閱 命名檔案、路徑和命名空間 的一節。

[out, optional] lpFileSizeHigh

壓縮檔大小的高階 DWORD。 函式的傳回值是壓縮檔大小的低序 DWORD

如果不需要壓縮檔案大小的高階 DWORD,此參數就可以 NULL。 大小小於 4 GB 的檔案不需要高階 DWORD

傳回值

如果函式成功,則 傳回值是用來儲存指定檔案之磁碟記憶體實際位元元組數的低序 DWORD,如果 lpFileSizeHighNULL,函式會將該實際值的高階 DWORD 放入該參數所指向 DWORD。 這是壓縮檔案的壓縮檔案大小,非壓縮檔案的實際檔案大小。

如果函式失敗,且 lpFileSizeHighNULL,則傳回值為 INVALID_FILE_SIZE。 若要取得擴充的錯誤資訊,請呼叫 GetLastError

如果傳回值是 INVALID_FILE_SIZElpFileSizeHigh 為非NULL,則應用程式必須呼叫 GetLastError,以判斷函式是否成功(值為 NO_ERROR)或失敗(值不是 NO_ERROR)。

言論

應用程式可以藉由呼叫 getVolumeInformation呼叫 來判斷磁碟區是否已壓縮,然後檢查該函式的 lpFileSystemFlags 參數所指向的 DWORD 值中 FS_VOL_IS_COMPRESSED 旗標的狀態。

如果檔案不在支援壓縮或疏鬆檔案的磁碟區上,或檔案未壓縮或疏鬆檔案,則取得的值會是實際的檔案大小,與呼叫 getFileSize 所傳回的值相同,

符號連結行為— 如果路徑指向符號連結,函式會傳回目標的檔案大小。

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

科技 支援
伺服器消息塊 (SMB) 3.0 通訊協定 是的
SMB 3.0 透明故障轉移 (TFO) 是的
具有向外延展檔案共用的SMB 3.0(SO) 是的
叢集共用磁碟區檔案系統 (CsvFS) 是的
復原檔案系統 (ReFS) 是的
 

注意

fileapi.h 標頭會根據 UNICODE 預處理器常數的定義,將 GetCompressedFileSize 定義為自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程序代碼,可能會導致編譯或運行時間錯誤不符。 如需詳細資訊,請參閱函式原型的 慣例。

要求

要求 價值
最低支援的用戶端 Windows XP [僅限傳統型應用程式]
支援的最低伺服器 Windows Server 2003 [僅限傳統型應用程式]
目標平臺 窗戶
標頭 fileapi.h (包括 Windows.h、WinBase.h、Fileapi.h、Windows.h、WinBase.h、Fileapi.h)
連結庫 Kernel32.lib
DLL Kernel32.dll

另請參閱

檔案壓縮和解壓縮

檔案管理功能

GetCompressedFileSizeTransacted

GetFileSize

GetVolumeInformation

符號連結