GetFileSize 函式 (fileapi.h)
擷取指定檔案的大小,以位元組為單位。
建議您使用 GetFileSizeEx。
語法
DWORD GetFileSize(
[in] HANDLE hFile,
[out, optional] LPDWORD lpFileSizeHigh
);
參數
[in] hFile
檔案的控制碼。
[out, optional] lpFileSizeHigh
傳回檔案大小高序雙字之變數的指標。 如果應用程式不需要高序雙字,此參數可以是 Null 。
傳回值
如果函式成功,則傳回值是檔案大小的低序雙字,如果 lpFileSizeHigh 不是Null,則函式會將檔案大小的高序雙字放入該參數所指向的變數。
如果函式失敗且 lpFileSizeHigh 為 Null,則傳回值 會INVALID_FILE_SIZE。 若要取得擴充的錯誤資訊,請呼叫 GetLastError。 當 lpFileSizeHigh 為 Null時,針對大型檔案傳回的結果模棱兩可,而且您將無法判斷檔案的實際大小。 建議您改用 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 |