【发布时间】:2014-04-28 05:04:27
【问题描述】:
我的代码目前使用一个库,我将 FILE* 传递给它,它使用 fread() CRT API 读取一堆复杂的配置数据。我想移动文件以成为文件中的嵌入式资源(Windows DLL)。不幸的是,读取 Windows 资源会直接将数据作为 void*.... 传递给库。
我想要的是能够获得由内存缓冲区而不是磁盘上的文件支持的 FILE*。 Windows 有 CreateStreamOnHGlobal(),但它使用 IStream*,我需要一个 FILE*。不幸的是,我找不到任何适用于 Windows 的解决方案。 这可能吗?
我可以使用的解决方案是将资源数据写入临时文件,将临时文件传递给配置解析器,然后删除该文件....但效率极低,我处理大量数据。
【问题讨论】:
-
我认为内存映射文件可能会给你你正在寻找的东西。在 Wikipedia 上查看 Memory-mapped file 或在 MSDN 上查看 Memory-Mapped Files。
-
我需要相反的内存映射文件。 MMF 让您将文件视为内存;我需要做的是将内存视为文件。不过感谢您的建议。
-
感谢您的澄清。我希望你能找到改变你的库以使用更合适的抽象来利用内存中的数据的动机。