Lisp implementations of COM interfaces are created by defining an appropriate class and then defining COM methods for all the interfaces implemented by this class.
The class can inherit from standard-i-unknown to obtain an implementation of the i-unknown interface. This superclass provides reference counting and an implementation of the
query-interface
method that generates COM interface pointers for the interfaces specified in the class definition. It also supports
aggregation
.
There are two important things to note about COM classes and methods:
defmethod
because they have very specific conventions for passing arguments and returning values that are different from those of Lisp. Figure 1.1 The relationship between an Lisp object and its COM interface pointers