• Бесплатный ВЕБИНАР по OSINT с Екатериной Тьюринг: ➡️9 февраля в 19:00 (мск) пройдет урок

    Как безопасно искать информацию в открытых источниках

    🔥 Записаться 🔥

Вызов метода Com объекта из некого Callback

  • Автор темы Автор темы ivs4
  • Дата начала Дата начала
I

ivs4

Здравствуйте. Возникла мледующая проблема. Имется интерфейс Dispath полученный в основном потоке через GetObject. Есть стороння библиотека которая реализует в себе реакции на некие события через CallBack ф-цию. Хочу выоплнить в этом CallBack метода COM объекта через известный диспатч. Предположил, что CallИфсл работает в новом потоке, поэтому испльзовал маршалинг. НО, при работе в CallBack ф-ции вываливаются то на Invoke, то на CoUnmarshalInterface.

ошибка на Invoke
0x80010108 Вызванный объект был отключен от клиентов.

ошибка на CoUnmarshalInterface
0x800401FD Объект не подключен к серверу

У меня уже был опыт работы с маршаигом и раньше проблем не возникало. Писал интерфейс в стрим и в потоке восстанавливал его. Помогите в решении проблемы или дайте совет где искать.

глобальная переменная
Код:
IStream *stream4;

Основной поток
Код:
hres=CoGetObject(bwscpath, NULL, IID_IDispatch, (void**) &disp4);
hres=CoMarshalInterThreadInterfaceInStream(IID_IDispatch,disp4,&stream4);

CallBack ф-ция
Код:
IDispatch *disp4;
LARGE_INTEGER v;
v.QuadPart=0;
hres=stream4->Seek(v,STREAM_SEEK_SET,NULL);
hres=CoUnmarshalInterface(stream4,IID_IDispatch,(void**)&disp4);
hres=disp4->Invoke(func4conSTATE,IID_NULL,LOCALE_USER_DEFAULT,DISPATCH_METHOD,&params4,&varResult,NULL,NULL);
 
Неужели никто не сталкивался с ошибками?

0x80010108 Вызванный объект был отключен от клиентов.

0x800401FD Объект не подключен к серверу
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!