Tobias Kienzler Tobias Kienzler - 3 months ago 9
Python Question

What does _com_interfaces_ do?

I'm trying to understand the COM server examples of , and in

win32comext/shell/demos/servers/icon_handler.py
I saw the line

_com_interfaces_ = [shell.IID_IExtractIcon, pythoncom.IID_IPersistFile]


While that pretty clearly refers to an
IconHandler
having to implement the
IExtractIcon
and
IPersistFile
interfaces, I cannot find any documentation where
_com_interfaces_
is actually used. It is nowhere to be seen in
win32com.server.register
or
win32com.server.localserver.py
, so neither registration nor the server call seem to actually use this. Is there any documentation on
_com_interfaces_
?

Answer

_com_interfaces_ is an optional attribute a Server Policy looks for:

_com_interfaces_

Optional list of IIDs exposed by this object. If this attribute is missing, IID_IDispatch is assumed (ie, if not supplied, the COM object will be created as a normal Automation object.

The list is used to answer QueryInterface inqueries, see the win32com.server.policy module to see how this is being used, specifically the BasicPolicy._wrap() and BasicPolicy._QueryInterface_ methods.

Comments