Что делает _com_interfaces_?

Я пытаюсь понять примеры COM-сервера pywin32, и в win32comext/shell/demos/servers/icon_handler.py Я видел линию

_com_interfaces_ = [shell.IID_IExtractIcon, pythoncom.IID_IPersistFile]

Хотя это довольно четко относится к IconHandler необходимость реализации IExtractIcon а также IPersistFile интерфейсы, я не могу найти документацию, где _com_interfaces_ на самом деле используется. Это нигде не видно в win32com.server.register или же win32com.server.localserver.py так что ни регистрация, ни серверный вызов, кажется, на самом деле не используют это. Есть ли документация по _com_interfaces_?

1 ответ

Решение

_com_interfaces_ является необязательным атрибутом, который ищет Политика сервера:

_com_interfaces_

Необязательный список IID, предоставляемых этим объектом. Если этот атрибут отсутствует, IID_IDispatch предполагается (т. е. если не указан, COM-объект будет создан как обычный объект автоматизации.

Список используется для ответа QueryInterface Enqueries, см. win32com.server.policy модуль, чтобы увидеть, как это используется, в частности, BasicPolicy._wrap() а также BasicPolicy._QueryInterface_ методы.

Другие вопросы по тегам