【问题标题】:GetFileInformationByHandle() for stdio file handlesGetFileInformationByHandle() 用于 stdio 文件句柄
【发布时间】:2014-12-07 21:02:36
【问题描述】:

有什么方法可以将 GetFileInformationByHandle() 与 fopen() 分配的 stdio 文件句柄一起使用?使用 fstat() 和 fileno() 不足以满足我的目的,因为我需要获取一些不属于 struct stat 的特定于 Windows 的信息,所以我想知道是否有任何方法可以将 stdio FILE* 句柄提供给 GetFileInformationByHandle ()?

【问题讨论】:

  • 使文件由CreateFile处理。
  • 但这不允许我使用 stdio 文件句柄作为源。它想要一个文件名。我想避免在 stdio 文件句柄旁边建立第二个文件句柄。我想知道是否有可能以某种方式访问​​存储在 FILE* stdio 句柄中的 Windows 文件句柄以将其提供给 GetFileInformationByHandle()。 Visual C stdio 有各种微软扩展,所以也许也有一个扩展。

标签: c winapi stdio


【解决方案1】:

使用_fileno() 获取文件号(不,我不知道为什么微软添加了_,而不是“ISO C++ 一致性”)然后_get_osfhandle() 从文件号转到HANDLE .我不记得为什么 msvcrt 使用文件编号而不是直接将 FILE 绑定到 HANDLE(但我认为这是为了 POSIX 兼容性?)。

【讨论】:

  • 谢谢,这正是我想要的。
猜你喜欢
  • 2014-02-19
  • 1970-01-01
  • 2011-09-04
  • 1970-01-01
  • 2014-08-28
  • 2010-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多