GetFileInformationByHandleEx 函数 (winbase.h)

检索指定文件的文件信息。

有关适用于桌面应用的此函数的更基本版本,请参阅 GetFileInformationByHandle

若要使用文件句柄设置文件信息,请参阅 SetFileInformationByHandle

语法

BOOL GetFileInformationByHandleEx(
  [in]  HANDLE                    hFile,
  [in]  FILE_INFO_BY_HANDLE_CLASS FileInformationClass,
  [out] LPVOID                    lpFileInformation,
  [in]  DWORD                     dwBufferSize
);

参数

[in] hFile

包含要检索的信息的文件的句柄。

此句柄不应是管道句柄。

[in] FileInformationClass

一个FILE_INFO_BY_HANDLE_CLASS枚举值,该值指定要检索的信息的类型。

有关有效值的表,请参阅“备注”部分。

[out] lpFileInformation

指向接收请求的文件信息的缓冲区的指针。 返回的结构对应于 FileInformationClass 指定的类。 有关有效结构类型的表,请参阅“备注”部分。

[in] dwBufferSize

lpFileInformation 缓冲区的大小(以字节为单位)。

返回值

如果函数成功,则返回值为非零值,并且文件信息数据包含在 lpFileInformation 参数指向的缓冲区中。

如果函数失败,则返回值为零。 要获得更多的错误信息,请调用 GetLastError。

注解

如果 FileInformationClassFileStreamInfo 且调用成功,但未返回流,则 getLastError 返回的错误 ERROR_HANDLE_EOF

某些文件信息类在不同操作系统版本中的行为略有不同。 基础驱动程序支持这些类,它们返回的任何信息都可能会在操作系统版本之间发生更改。

下表显示了用于此函数的有效文件信息类类型及其相应的数据结构类型。

FileInformationClass lpFileInformation 类型
FileBasicInfo (0) FILE_BASIC_INFO
FileStandardInfo (1) FILE_STANDARD_INFO
FileNameInfo (2) FILE_NAME_INFO
FileStreamInfo (7) FILE_STREAM_INFO
FileCompressionInfo (8) FILE_COMPRESSION_INFO
FileAttributeTagInfo (9) FILE_ATTRIBUTE_TAG_INFO
FileIdBothDirectoryInfo (0xa) FILE_ID_BOTH_DIR_INFO
FileIdBothDirectoryRestartInfo (0xb) FILE_ID_BOTH_DIR_INFO
FileRemoteProtocolInfo (0xd) FILE_REMOTE_PROTOCOL_INFO
FileFullDirectoryInfo (0xe) FILE_FULL_DIR_INFO
FileFullDirectoryRestartInfo (0xf) FILE_FULL_DIR_INFO
FileStorageInfo (0x10) FILE_STORAGE_INFO
FileAlignmentInfo (0x11) FILE_ALIGNMENT_INFO
FileIdInfo (0x12) FILE_ID_INFO
FileIdExtdDirectoryInfo (0x13) FILE_ID_EXTD_DIR_INFO
FileIdExtdDirectoryRestartInfo (0x14) FILE_ID_EXTD_DIR_INFO
 

事务处理操作

如果在调用时有事务绑定到线程,则该函数将返回独立文件视图的压缩文件大小。 有关详细信息,请参阅 关于事务 NTFS

在 Windows 8 和 Windows Server 2012 中,此函数由以下技术支持。

技术 支持
服务器消息块 (SMB) 3.0 协议
SMB 3.0 透明故障转移 (TFO)
具有横向扩展文件共享的 SMB 3.0 (SO)
群集共享卷文件系统 (CSV)
弹性文件系统 (ReFS)

要求

   
最低受支持的客户端 Windows Vista [桌面应用 | UWP 应用]
最低受支持的服务器 Windows Server 2008 [桌面应用 | UWP 应用]
目标平台 Windows
标头 winbase.h (包括 Windows.h)
Library Kernel32.lib;Windows Server 2003 和 Windows XP 上的 FileExtd.lib
DLL Kernel32.dll
可再发行组件 Windows Server 2003 和 Windows XP 上的 Windows SDK。

另请参阅

FILE_INFO_BY_HANDLE_CLASS

文件管理函数

SetFileInformationByHandle