Allows a fuller control hook of the DLL function.
Requires that you call the magic func(…) function, where your hook args
are directly passed into it. If this DLL function has a return value,
you must capture it and then return it at the end of the hook.
If the function has a value being returned, you can modify it with the magic ‘ret’ variable.
This variable has already been defined and made mutable by the macro, so changes can just be made.