Как написать COM-сервер в сыром C? - PullRequest
1 голос
/ 10 июня 2010

Я изучаю COM. Я думаю, что лучший способ получить полное представление о COM - это написать один без какой-либо инфраструктуры COM, такой как ATL. Я написал COM-сервер в сыром C ++, и теперь я хочу написать один в простом сыром C. Как я мог это сделать? Есть ли учебник?

Большое спасибо.

Ответы [ 2 ]

4 голосов
/ 10 июня 2010

Запись COM-серверов на C не является невозможной. Просто COM-код уже сложен, он будет немного сложнее в C, поскольку вы не получите помощи от встроенной поддержки v-таблицы, которую генерирует совместимый C ++ компилятор. Или библиотека классов, как ATL. Вы должны создать свой собственный.

Хорошим источником для примера кода COM, написанного на C, является проект WINE. Например, реализация интерфейса IGlobalInterfaceTable . Обратите внимание на GITClassFactoryVtbl в этом коде, это таблица диспетчеризации интерфейса для фабрики классов, и StdGlobalInterfaceTableImpl_Vtbl, таблица диспетчеризации для IGlobalInterfaceTable.

Не уверен, что это даст вам более глубокое понимание программирования COM. Вряд ли вы когда-нибудь напишите настоящий сервер, подобный этому. Вы уже написали внепроцессный сервер?

2 голосов
/ 10 июня 2010

Книга Дона Бокса Essential COM - одна из лучших, которая объясняет все о COM с нуля.Рекомендуется.

COM, тем не менее, является десятилетней технологией, которая требует огромного количества работы в C, и Дон Бокс (ранее считавшийся одним из экспертов) даже не трогает ее.Возьми что хочешь от этого.

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