见标题。
我如何实现这个问题的反面:How do I get the file HANDLE from the fopen FILE structure?
我用
创建句柄 HANDLE h = CreateFile(name,
GENERIC_WRITE,
0,
NULL,
OPEN_ALWAYS,
FILE_ATTRIBUTE_NORMAL,
NULL);
然后尝试使用 fputs
向其中写入一些数据。
fputs
调用失败
_VALIDATE_STREAM_ANSI_RETURN(stream, EINVAL, EOF);
其中 stream
是我从 CreateFile
获得的句柄。
我这样做的原因是我使用了一个使用 FILE*
句柄的外部库,并且我没有打开一个普通文件(直到现在),而是试图写入一个管道代替。并且更改外部库不是一种选择。
最佳答案
不知道这是否是最好的方法,但请参阅 _open_osfhandle()
:
http://msdn.microsoft.com/en-us/library/bdts1c9x(v=vs.71).aspx
int fd = _open_osfhandle(h, ...);
它返回一个文件描述符,您必须使用 fdopen
打开它以获得 FILE*
。
FILE* fp = _fdopen(fd, ...);
关于c - 如何检索 CreateFile 结果的 FILE*?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7359188/