如何通过管道发送/接收具有复杂数据结构的数据?

时间:2010-08-22 06:25:40

标签: c++ directshow pipe

HRESULT GrabberCB :: SampleCB ( double SampleTime , IMediaSample * pSample )   {      

How to send the pSample content via pipe?

}  

我知道在阅读此示例后如何string发送/接收WriteFile/ReadFile

http://msdn.microsoft.com/en-us/library/aa365592%28v=VS.85%29.aspx

但是如何发送pSample

2 个答案:

答案 0 :(得分:1)

在通过任何传输发送之前,您需要serialize数据,而在另一端,您需要反序列化数据以将其转换回来。根据您的数据的简单/复杂,有很多方法可以做到这一点。

您可以自己动手或使用某种类型的框架,例如Google Protocol Buffers或COM。没有正确答案,这完全取决于您要做什么,数据有多复杂以及您需要什么样的性能。

答案 1 :(得分:0)

为什么要尝试将其发送到管道上?如果管道阅读器是一个COM对象而且你只是让COM框架处理所有事情,那将会容易得多。话虽这么说,您可以使用CoMarshalInterface将COM对象编组为流(甚至是进程外);也许你可以通过管道发送该流并用CoUnmarshalInterface重构它。