【发布时间】:2013-10-19 10:35:30
【问题描述】:
我正在使用第三方库,它允许在 A 和 B 两种文件格式之间进行转换。我想使用这个库来加载格式 A 的文件并将其转换为格式 B,但我只需要在内存中转换的表示。所以我想在不实际将目标格式的文件保存到磁盘的情况下进行转换,而是获得一个unsigned char* 缓冲区或类似的东西。不幸的是,图书馆唯一的转换功能是形式
void saveAsB(A& a, std::FILE *const file);
我能做什么?有没有办法将句柄上执行的写操作重定向到某个缓冲区?
【问题讨论】:
-
如果库从 DLL(例如 MSVCRT)动态加载
fwrite(),您可以尝试 DLL 注入来挂钩fwrite():en.wikipedia.org/wiki/DLL_Injection,尽管 blogs.msdn.com/b/oldnewthing/archive/2007/12/13/6648400.aspx。然而,最明智的做法是写入一个临时文件,然后将其读回内存。