Номер версии COM-объекта и как он обрабатывается через реестр Win - PullRequest
0 голосов
/ 12 марта 2012

COM-объект регистрируется в системе через кучу информации - например, GUID, ProgId и т. Д. TypeLibs также имеют поле 'version', которое а) может быть записано в реестр и б) находится внутри idl. Мой вопрос сейчас - проверено ли поле версии каким-либо образом системой при использовании / инициализации COM-объекта. Например. если я создаю новую версию своего COM-объекта без изменения GUID, но с увеличением номера версии, это приводит к каким-либо несоответствиям?

Причиной не изменения GUID, а увеличения номера версии являются исправления ошибок в библиотеке типов без прикосновения к интерфейсу.

1 Ответ

0 голосов
/ 12 марта 2012

Это не должно быть проблемой, даже если ваш сценарий развертывания.COM - это общий термин для ряда технологий.Почти на самом низком уровне *, 1001 * не заботятся о понятиях более высокого уровня, таких как typelibs.Он заботится о IClassFactory и, в частности, о CreateInstance методе.Ни функция CoGetClassObject для получения IClassFactory, ни метод IClassFactory::CreateInstance не используют номер версии typelib, и даже не предполагают, что существует typelib.

* На самом низком уровне вы даже можете иметь COMобъекты без фабрики классов или CLSID, но они не могут быть созданы CoCreateInstance.

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