2011-09-09 37 views
1

查看标题。如何检索CreateFile结果的FILE *?

如何实现这个问题的反面: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*手柄的外部库,我不打开一个纯文本文件(如到现在为止),但试图写一个管道来代替。而改变外部库不是一种选择。

回答

2

CreateFile将内部Windows句柄返回给该文件。您可以使用这个句柄使用WriteFile等功能写入文件。

要使用fputs,你需要打开文件与C. fopen功能如果你这样做,你会不会需要调用CreateFile明确,如fopen会为你做它,如果调用参数“W”( '写')。

因此,我不认为你在追求什么是可能的。这两套功能不兼容。

+1

(和upvoters):请参阅Emil的答案。这个对我有用。这种方法有什么问题吗(如果是这样,请评论他的回答)? – eckes

+0

谢谢你的指针(没有双关语意)。这是一个很棒的发现。 –