GetCompressedFileSizeTransactedA 函式 (winbase.h)

[Microsoft強烈建議開發人員利用替代方法來達成應用程式的需求。 TxF 開發的許多案例都可以透過更簡單且更容易使用的技術來達成。 此外,未來版本的 Microsoft Windows 可能無法使用 TxF。 如需詳細資訊和 TxF 的替代方案,請參閱使用交易式 NTFS的替代專案 。

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

語法

DWORD GetCompressedFileSizeTransactedA(
  [in]            LPCSTR  lpFileName,
  [out, optional] LPDWORD lpFileSizeHigh,
  [in]            HANDLE  hTransaction
);

參數

[in] lpFileName

檔名。

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

檔案必須位於本機計算機上;否則,函式會失敗,且最後一個錯誤碼會設定為 ERROR_TRANSACTIONS_UNSUPPORTED_REMOTE。

[out, optional] lpFileSizeHigh

接收壓縮檔大小之高階 DWORD 變數的指標。 函式的傳回值是壓縮檔大小的低序 DWORD。

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

[in] hTransaction

交易的句柄。 此句柄是由 createTransaction 函式 傳回。

傳回值

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

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

如果傳回值是 INVALID_FILE_SIZE 且 lpFileSizeHigh 為非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) 不
 

SMB 3.0 不支援 TxF。

注意

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

要求

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

另請參閱

檔案壓縮和解壓縮

檔案管理功能

GetFileSize

GetVolumeInformation

符號連結

事務管理