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) | 是 |
群集共享卷文件系统 (CSV) | 是 |
弹性文件系统 (ReFS) | 是 |
示例
有关示例,请参阅 在文件中创建视图。
要求
最低受支持的客户端 | Windows XP [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2003 [仅限桌面应用] |
目标平台 | Windows |
标头 | fileapi.h (包括 Windows.h) |
Library | Kernel32.lib |
DLL | Kernel32.dll |