GetFileSize 函式 (fileapi.h)

擷取指定檔案的大小,以位元組為單位。

建議您使用 GetFileSizeEx

語法

DWORD GetFileSize(
  [in]            HANDLE  hFile,
  [out, optional] LPDWORD lpFileSizeHigh
);

參數

[in] hFile

檔案的控制碼。

[out, optional] lpFileSizeHigh

傳回檔案大小高序雙字之變數的指標。 如果應用程式不需要高序雙字,此參數可以是 Null

傳回值

如果函式成功,則傳回值是檔案大小的低序雙字,如果 lpFileSizeHigh 不是Null,則函式會將檔案大小的高序雙字放入該參數所指向的變數。

如果函式失敗且 lpFileSizeHighNull,則傳回值 會INVALID_FILE_SIZE。 若要取得擴充的錯誤資訊,請呼叫 GetLastError。 當 lpFileSizeHighNull時,針對大型檔案傳回的結果模棱兩可,而且您將無法判斷檔案的實際大小。 建議您改用 GetFileSizeEx

如果函式失敗且 lpFileSizeHigh 為非Null,則傳回值 會INVALID_FILE_SIZE而且 GetLastError 會傳回 NO_ERROR以外的值。

備註

您無法將 GetFileSize 函式與非可見裝置的控制碼搭配使用,例如管道或通訊裝置。 若要判斷 hFile的檔案類型,請使用 GetFileType 函式。

GetFileSize函式會擷取未壓縮的檔案大小。 使用 GetCompressedFileSize 函式來取得檔案的壓縮大小。

請注意,如果傳回值 INVALID_FILE_SIZE (0xffffffff) ,應用程式必須呼叫 GetLastError 來判斷函式是否成功或失敗。 當函式不是 lpFileSizeHigh 可能是非Null ,或檔案大小可能0xffffffff時,函式可能會失敗。 在此情況下, GetLastError 會在成功時傳回 NO_ERROR (0) 。 由於此行為,建議您改用 GetFileSizeEx

交易作業: 如果有系結至檔案控制碼的交易,則函式會傳回隔離檔案檢視的資訊。

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

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

範例

如需範例,請參閱 在檔案內建立檢視

需求

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

另請參閱

檔案管理功能

GetCompressedFileSize

GetFileSizeEx

GetFileType