Событие COM с двоичными данными в аргументах - PullRequest
0 голосов
/ 17 июня 2009

Я пытаюсь разработать COM-объект с использованием C ++ и ATL для клиентов C ++ и C # Windows Mobile. COM-объект объединяет всю логику для подключения к нашему серверу и отправки / получения данных с использованием нашего закрытого протокола. У меня возникли трудности с созданием события OnReceive, которое корректно работает с C # и C ++.

Я определил функцию события следующим образом:

HRESULT OnReceive (BYTE * pBuffer, LONG lSize);

Но когда я смотрю на функцию в C # или Object Browser, она выглядит так:

OnReceive (реф байт pBuffer, int lSize);

Как бы я трактовал "ref byte" как указатель в C #? Как передать двоичные данные в OnReceive и разрешить клиентам C ++ и C # получать доступ к двоичным данным?

1 Ответ

0 голосов
/ 17 июня 2009

В основном у вас есть два варианта: использовать SAFEARRAY из байтов или помещать данные в BSTR. Последний, хотя и некрасиво, раньше был хаком по умолчанию для передачи двоичных данных компонентам VB6. Хотя я никогда не пробовал, думаю, это должно работать и для .Net.

...