For out parameters:
size_isattribute will be converted to a Lisp array of the appropriate size allocated for the dynamic extent of the body forms. After the body has been evaluated, the contents of the array will be copied into the foreign array that the caller has supplied.
nilinitially and the body should use
setqto set it to the value to be returned.
In the latter case, the value will be converted to a foreign object after the body has been evaluated. The following conversions are done:
stringattribute, a Lisp string will be converted to a foreign string using
BSTR*, a Lisp string will be converted to a foreign string using
VARIANT*, the value can be any Lisp value, with the VT code being set according to the Lisp type (see Automation types, VT codes and their corresponding Lisp types). If exact control is required, use the pass-style
:foreignand the function set-variant.
)*, the value can be either a foreign pointer to an appropriate
SAFEARRAYor a Lisp array. In the latter case, a new
SAFEARRAYis created which contains the elements of the Lisp array converted as in Automation types, VT codes and their corresponding Lisp types.
VARIANT_BOOL*, the value can be a generalized boolean.
LispWorks COM/Automation User Guide and Reference Manual - 19 Dec 2011