make-pointer &key address type pointer-type symbol-name functionp module encoding => pointer
The address pointed to by the pointer to be created.
The type of the object pointed to by the pointer to be created.
The type of the pointer to be made.
A string or a symbol.
If type or pointer-type are not specified, then functionp can be used.
If
t
, the pointer made is a pointer to type
:function
. This is the default value.
If
nil
, the pointer made is a pointer to type
:void
.
A symbol or string naming a module, or
nil
.
One of
:source
,
:object
,
:lisp
or
:dbcs
.
The function
make-pointer
creates a pointer of a specified type pointing to a given address, or optionally to a function or foreign callable.
symbol-name is either a string containing the name of a foreign symbol defined in a DLL, or a string or symbol naming a foreign callable defined by define-foreign-callable.
encoding
controls how
symbol-name
is processed. The values are interpreted like the
encode
argument of define-foreign-callable. The default value of
encoding
is
:source
if
symbol-name
is a string and
:lisp
if
symbol-name
is a symbol.
In the case of a pointer to a foreign callable or foreign function, the module keyword can be used to ensure that the pointer points to the function in the correct DLL if there are other DLLs containing functions with the same name. module is processed as by define-foreign-function.
In the following example a module is defined, and the variable
setpoint
is set equal to a pointer to a function in the module.
(fli:register-module :user-dll :real-name "user32")
(setq setpoint
(fli:make-pointer :symbol-name "SetCursorPos"
:module :user-dll)