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)
群集共享卷文件系统 (CSV)
弹性文件系统 (ReFS)
 

示例

有关示例,请参阅 在文件中创建视图

要求

   
最低受支持的客户端 Windows XP [仅限桌面应用]
最低受支持的服务器 Windows Server 2003 [仅限桌面应用]
目标平台 Windows
标头 fileapi.h (包括 Windows.h)
Library Kernel32.lib
DLL Kernel32.dll

另请参阅

文件管理函数

GetCompressedFileSize

GetFileSizeEx

GetFileType