【发布时间】:2021-12-26 22:30:58
【问题描述】:
我想对使用 CreateFile(返回 HANDLE)打开的现有文件使用文件流函数(例如,“ftell”)。我没有高兴地搜索了 SO 和其他地方。我想做这样的事情:
HANDLE h;
FILE *f;
int pos;
h = CreateFile( "MYFILE.TXT", ... )
f = *convert*( h, &f ); // the function I'm looking for
pos = ftell( f );
有没有办法从文件句柄中获取 FILE 流?
【问题讨论】:
-
_open_osfhandle()回到 1970 年代,_fdopen()传送回到 1980 年代 -
ftell 有什么意义?
-
“我想使用文件流函数(例如,“ftell”)” - 为什么有人愿意这样做?为什么要回到 POSIX,即计算的石器时代,文件的硬限制为 2GB?
-
响应者:我正在维护一个使用 VC6.0 构建的已有 15 年历史的遗留应用程序,在其中我找不到现代的、政治上正确的解决方案。无论如何,恕我直言,我的问题是“如何”这样做,而不是“为什么”我不应该这样做。顺便说一句 - “如何”实际上在引用的答案中得到了回答。
-
SetFilePointer始终可用,无论您声称自己的代码有多旧,或者您是否需要 Visual C++ 6 来编译它。
标签: winapi