如何用IStream传递一个较大的文件? 如何Mashaling该stream?
在客户和DCom服务器中间传送文件,以前我是用VARIANT包装了SAFEARRAY来传递数据的,但是对于大文件13M左右,读很快几秒钟即可,但是写很慢,要1分钟左右。
ReadData([out] VARIANT *pBuf);//从DCom读数据,传到前端,很快13M要几秒钟
WriteData([in]VARIANT *pBuf);//前端上传数据到DCom,很慢要13M要1分钟
不知道是为什么,同样的要传递13M,只是[in]、[out]的区别,发现WriteData大部分的时间都耗费在参数的传递上了。
经网友的提示到国外网站上看看,发现很多人都遇到了这个问题,都说要用IStream传递。但是要把IStream列集和散集才行,我不知道怎么做?有人试过吗?
DCom服务器利用IStream的函数如下:
WriteStreamFile1(IStream *pITransferStream, BSTR psFileName, BSTR psCheckStr, int piSize);
利用IStream的几个函数(stat和read)做测试,发现IStream流不能够把数据传送过去,据说是要列集和散集,有人做过吗?在客户端,已经测试过IStream的读写,都没有问题。
困惑中......