The generic function com-object-destructor
is called by the implementation of the class standard-i-unknown at the point where the last COM interface pointer is removed for the object, i.e. where the overall reference count becomes zero. After this, the object is known only to Lisp and is not involved in any COM operations and will be freed as normal by the garbage collector. The built-in primary method specializing on standard-i-unknown
does nothing. The build-in around method specializing on standard-i-unknown
frees the memory used by the COM interface pointers. Typically, after methods are defined to handle class-specific cleanups.
(defmethod com-object-destructor :after
((my-doc doc-impl))
(close (document-file my-doc)))
LispWorks COM/Automation User Guide and Reference Manual - 23 Mar 2017