Как установить обратный вызов из консольного приложения C ++ в C ++ COM DLL - PullRequest
0 голосов
/ 29 августа 2018

Это проблема, которую я пытаюсь решить.

Мое консольное приложение C ++ взаимодействует с C ++ COM DLL.

При определенных условиях C ++ COM DLL необходимо отправить некоторые данные обратно в консольное приложение. Я думал передать обратный вызов (std :: function) в качестве параметра одного из API DLL, но я не знаю, поддерживает ли это COM.

Как я могу реализовать такие обратные вызовы?

Спасибо за вашу помощь!

1 Ответ

0 голосов
/ 30 августа 2018

Существует пример программы, которая может быть полезна для вашей проблемы.
Это пример специализированного интерфейса под названием IPortableDevice / IPortableDeviceEventCallback.
Корень проекта Пример COM-интерфейса портативных устройств
CallBack регистрация / выпуск часть DeviceEvents.cpp

Как принцип общего назначения, используемая COM-DLL должна реализовывать интерфейс IConnectionPoint.
Приложение реализует интерфейс IConnectionPointContainer и регистрирует CallBack (= обработчик событий), вызывая IConnectionPoint :: Advice с этим объектом в качестве параметра.

Пожалуйста, выполняйте поиск по-разному с помощью IConnectionPoint / IConnectionPointContainer.

Нет другого примера кода, но есть и эта статья.
Что такое IconnectionPoint и EventHandling

...