Как отправить / получить данные со сложной структурой данных через канал? - PullRequest
0 голосов
/ 22 августа 2010
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 ]

1 голос
/ 22 августа 2010

Вам необходимо сериализовать ваши данные перед отправкой через любой транспорт, а на другом конце вам нужно десериализовать данные, чтобы преобразовать их обратно.Есть много и много способов сделать это в зависимости от того, насколько просты / сложны ваши данные.

Вы можете свернуть свои собственные или использовать какую-то платформу, например Буферы протокола Google или COM.Правильного ответа нет, все зависит от того, что вы пытаетесь сделать, насколько сложны ваши данные и какой производительности вам требуется.

0 голосов
/ 22 августа 2010

Почему вы пытаетесь отправить его по трубе? Было бы намного проще, если бы читатель канала был объектом COM, а вы просто позволяли инфраструктуре COM позаботиться обо всем. При этом вы можете маршалировать COM-объект в поток (даже вне процесса) с CoMarshalInterface; возможно, вы могли бы затем отправить этот поток через канал и восстановить его с помощью CoUnmarshalInterface.

...