【发布时间】:2017-11-20 16:09:07
【问题描述】:
有没有一种方法可以将非托管内存转移到内存映射文件中,而无需先对非托管内存进行编组?
我正在使用一个 API,它通过委托向我提供翻录的 PDF 数据。我得到一个指向数据的 IntPtr,然后我用它来将非托管字节数组编组为托管字节数组。然后我将该数组写入内存映射文件。我没有对字节数组进行任何处理。我所做的只是将数组写入内存映射文件,然后在稍后的时间点,我从文件中读回数据并将其通过线路发送到另一个应用程序(不是 .Net 应用程序)。
有没有办法在没有编组的情况下做到这一点?有没有办法可以将非托管数据直接写入内存映射文件?
private void Callback( IntPtr data, int length )
{
var buffer = new byte[ length ];
Marshal.Copy( data, buffer, 0, length );
_memoryMappedViewStream.Write( buffer, 0, length );
}
【问题讨论】: