Как называется использование COM-объектов через «сырые» указатели? - PullRequest
0 голосов
/ 16 декабря 2010

У нас есть довольно старый COM-подобный компонент с набором довольно сложных интерфейсов. Эти интерфейсы довольно проблематичны для маршала, поэтому мы ничего не регистрируем в реестре, а вместо этого экспортируем функцию CreateMainObject() из DLL компонента, которая получает указатель IMainObject, а интерфейс IMainObject имеет огромный набор других функций.

Таким образом, клиент никогда не вызывает CoCreateInstance() - вместо этого он вызывает LoadLibraryEx() / GetProcAddress() и затем вызывает CreateMainObject() функцию. Никакой сортировки никогда не может быть выполнено, поскольку COM на самом деле не выходит на сцену - все действия выполняются путем прямого вызова методов для этих объектов. Все очень быстро, но, конечно, не поточно-ориентировано и не работает в суррогате COM +.

Существует ли термин для такого использования интерфейсов COM?

1 Ответ

1 голос
/ 16 декабря 2010

Используемый вами термин «неверный», например: «Это неправильное использование интерфейсов COM».

Почему бы не зарегистрировать ICreateMainObject, полученное из IUnknown (или IDispatch, если вы предпочитаете), с одним методом, ICreateMainObject::CreateMainObject, а затем использовать этот метод для создания экземпляра вашего объекта с использованием допустимой семантики COM.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...