c-如何在Windows上将BYTE数组映射为FILE *

我发现了旧的巨大的开源代码,该代码对存储在磁盘文件中的二进制数据进行一些计算,输出也保存为二进制文件.

我想使用一种根方法,简化签名:

int magic(FILE* input, FILE* output);

问题是我将输入数据存储在进程内存中,并且希望将输出也作为进程内存.代码是如此之大,以至于我无法在合理的时间内重写它.

这个API迫使我在对magic()的每次调用上都要进行两个巨大的I / O.

在Windows上是否有可能使用C/C++机制将BYTE数组映射为FILE *?

解决方法:

似乎您需要fmemopen的功能

http://man7.org/linux/man-pages/man3/fmemopen.3.html

它占用一个内存区域并返回一个文件描述符.
不幸的是,这是POSIX函数,在Windows中没有等效的函数.内存映射文件可能不是您想要的,因为它们会获取现有文件并将其映射到内存区域,而不是像fmemopen那样.您唯一的选择是在Windows上的mingw上使用fmemopen(不知道是否可以这样做),或者推出自己的fopen,fwrite等版本.

相关文章

Windows2012R2备用域控搭建 前置操作 域控主域控的主dns:自...
主域控角色迁移和夺取(转载) 转载自:http://yupeizhi.blo...
Windows2012R2 NTP时间同步 Windows2012R2里没有了internet时...
Windows注册表操作基础代码 Windows下对注册表进行操作使用的...
黑客常用WinAPI函数整理之前的博客写了很多关于Windows编程的...
一个简单的Windows Socket可复用框架说起网络编程,无非是建...