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

时间:2017-10-19 18:34:52

标签: c++ c windows file io

我找到了旧的,巨大的开源代码,它对存储在磁盘上的文件中的二进制数据执行一些计算,输出也保存为二进制文件。

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

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

问题是我将输入数据存储在进程内存中,我想将输出也作为内存进行处理。代码太大了,以至于我无法在合理的时间内重写它。

这个API迫使我在每次调用magic()时都会发出两个巨大的I / O.

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

1 个答案:

答案 0 :(得分:3)

您似乎需要fmemopen的功能:

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

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