获取FILE *句柄而不实际在磁盘上创建文件

时间:2013-01-10 10:29:34

标签: c++ windows file winapi

我需要处理一些我无法修改的遗留库的数据。我的问题是它需要一个普通的旧FILE句柄才能保存其结果,而且我根本不需要在磁盘上写任何东西。

我知道没有标准的方法可以做到这一点,但是可以使用Windows API,boost或其他任何东西来获取一些指向内存的文件句柄吗?

我找不到任何解决方案,它明确保证不会(系统地)执行光盘访问。

2 个答案:

答案 0 :(得分:3)

我相信你可以使用管道语法fopen管道:

fopen("\\\\.\\pipe\\WritePipe", "w+");

您需要事先使用CreateNamedPipe创建管道,但是一旦完成,您应该能够使用管道来处理数据。

您可能需要创建一个线程来从管道中读取,以确保您的应用程序不会挂起,但它应该可以满足您的需求(无法触及文件系统)

答案 1 :(得分:1)

尝试

fmemopen

来自How to write to a memory buffer with a FILE*?

tbert的回答:

  

对于其他任何偶然发现此线索的人   回答:是的,有一种符合标准的方式将内存用作   FILE描述符:fmemopen或open_memstream,取决于   你想要的语义。

     

http://pubs.opengroup.org/onlinepubs/9699919799/functions/fmemopen.html

     

http://pubs.opengroup.org/onlinepubs/9699919799/functions/open_memstream.html