如何从内存加载IPersistFile?

时间:2013-05-28 13:31:00

标签: com memory-mapped-files ifilter ipersistfile

我在C#中使用IPersistFile加载文件,然后将其作为IFilter读取:

IFilter filter = LoadIFilter (fileextension);
IPersistFile persistFile = (filter as IPersistFile);
if (persistFile != null) {
    persistFile.Load (fileName, 0);
    IFILTER_FLAGS flags;
    IFILTER_INIT iflags = IFILTER_INIT.FILTER_OWNED_VALUE_OK;
    if (filter.Init (iflags, 0, IntPtr.Zero, out flags) == IFilterReturnCode.S_OK) {
        return filter; // will be read using GetChunk/GetText
    }
}

这很好用。

但是,我想从内存而不是磁盘路径加载文件内容。那可能吗? IPersistFile接口除了提供路径字符串之外没有任何其他方式,因此似乎既不能使用内存映射文件也不能使用字节数组。

1 个答案:

答案 0 :(得分:1)

作为初步答案草图:我的研究indicates可以转换为IPersistStream而不是IPersistFile,它允许从IStream加载,从而从内存目标加载。