• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Вызов метода 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);
 
I

ivs4

Неужели никто не сталкивался с ошибками?

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

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

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