2014-12-07 78 views
1

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

+0

通过'CreateFile'创建文件句柄。 – BLUEPIXY 2014-12-07 21:09:38

+0

但是这不允许我使用stdio文件句柄作为源。它想要一个文件名。我想避免在stdio文件句柄旁边建立第二个文件句柄。我想知道是否有可能以某种方式访问​​存储在FILE * stdio句柄内的Windows文件句柄,将它提供给GetFileInformationByHandle()。 Visual C++ stdio有各种微软扩展,所以也许有一个扩展。 – Andreas 2014-12-07 21:13:51

回答

3

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

+0

谢谢,这正是我正在寻找的。 – Andreas 2014-12-07 21:43:10