(auto-method loo-tool :fortify 12 "xxx" :agency 19 :part "a")
invokes the method named fortify with 4 arguments, two positional and
two named agency and part.
(code-guid 0 0 0 #xc000 #x0046)
or as
(code-guid 0)
.
(defiid IID_IClassFactory "{00000001-0000-0000-C000-000000000046}")
(defiid IID_IClassFactory 1 0 0 #xc000 #x0046)
(defiid IID_IClassFactory 1)
(AddRef (find-the-server-interface-for pInterface))
It is often convenient to have the worker function call something other
than the default function. Name clashes can make this desirable, for
example. It is also often the case that an argument coming in to the
linkage function is a pointer to data rather than an integer value.
An example is a pointer to a guid coming in to the QueryInterface method.
In this case it might be useful to perform some conversion in the
linkage function and pass Lisp data to the worker function.
(def-server-interface IUnknown
:method-transforms
((QueryInterface (bxg-fad (binary-guid *) *))))
says that only the QueryInterface method for IUnknown-server objects is
nonstandard. Its foreign-callable linkage function calls
bxg-fad with three arguments. The first argument to bxg-fad is, of course,
the xxx-server object associated with the
incoming pInterface value. The second argument to bxg-fad is computed by
calling binary-guid on the second argument coming in to the worker function.
The third argument to bxg-fad is just the incoming third argument, unmodified.
(decode 123 (rehash 9) (flights 27))
says that the decode operation has dispid 123 and that when used with decode,
the names rehash and flights are represented by dispids 9 and 27,
respectively. Note that the same name may represent different dispids when
used as an argument name for different operations.
- :char
- :unsigned-char
- :short
- :unsigned-short
- :long
- :unsigned-long
- :quad
- :unsigned-quad
- :float
- :double
- ole:cy
- ole:date
- ole:bstr
- error
- ole:bool
- ole:hresult
- ole:safearray
- ole:variant
- ole:IUnknown
- ole:IDispatch
(safearray-aref ...)
is setf-able.(variant-aref ...)
is setf-able.(variant-value ..)
is setf-able.
If the optional interface-type argument is supplied it must name a
*-client interface type. In that case interface values will be returned as the
specified type, rather than IUnknown-client or IDispatch-client.
If the special variable variant-value-translation-function is not NIL, then
the value extracted from the variant is translated before being returned.