我找到了旧的,巨大的开源代码,它对存储在磁盘上的文件中的二进制数据执行一些计算,输出也保存为二进制文件。
我想使用一种root方法,简化签名:
int magic(FILE* input, FILE* output);
问题是我将输入数据存储在进程内存中,我想将输出也作为内存进行处理。代码太大了,以至于我无法在合理的时间内重写它。
这个API迫使我在每次调用magic()
时都会发出两个巨大的I / O.
是否有可能使用C / C ++机制在Windows上将BYTE
数组映射为FILE*
?
答案 0 :(得分:3)
您似乎需要fmemopen
的功能:
http://man7.org/linux/man-pages/man3/fmemopen.3.html
采用内存区域并返回文件描述符。 不幸的是,这是一个在Windows中没有等效功能的POSIX功能。内存映射文件可能不是您想要的,因为它们采用现有文件并将其映射到内存区域,而不是像fmemopen那样。你唯一的选择是在Windows上使用fmemopen和mingw(不知道你是否可以这样做)或推出你自己的fopen,fwrite等版本。